From c4ebf2cc57dd715001f09589b522f401ab6dac03 Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Thu, 22 Sep 2022 22:59:16 +0000 Subject: [PATCH] tint: Implement textureSampleBaseClampToEdge Fixed: tint:1671 Change-Id: Iaae5b5d571a4401c0255de727245bf8dbbe06740 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/102642 Reviewed-by: David Neto Kokoro: Kokoro Commit-Queue: Ben Clayton --- docs/tint/origin-trial-changes.md | 10 + src/tint/intrinsics.def | 4 +- src/tint/resolver/intrinsic_table.inl | 5471 +++++++++-------- src/tint/sem/builtin.cc | 16 +- src/tint/sem/builtin_type.cc | 5 + src/tint/sem/builtin_type.h | 1 + src/tint/sem/call_target.cc | 2 +- src/tint/sem/call_target.h | 8 + src/tint/transform/builtin_polyfill.cc | 45 + src/tint/transform/builtin_polyfill.h | 2 + src/tint/transform/builtin_polyfill_test.cc | 71 + .../transform/multiplanar_external_texture.cc | 279 +- .../multiplanar_external_texture_test.cc | 638 +- src/tint/writer/glsl/generator_impl.cc | 1 + src/tint/writer/hlsl/generator_impl.cc | 1 + src/tint/writer/msl/generator_impl.cc | 1 + src/tint/writer/spirv/generator_impl.cc | 1 + .../textureSampleBaseClampToEdge/7c04e6.wgsl | 45 + .../7c04e6.wgsl.expected.dxc.hlsl | 122 + .../7c04e6.wgsl.expected.fxc.hlsl | 122 + .../7c04e6.wgsl.expected.glsl | 220 + .../7c04e6.wgsl.expected.msl | 95 + .../7c04e6.wgsl.expected.spvasm | 276 + .../7c04e6.wgsl.expected.wgsl | 23 + .../textureSampleBaseClampToEdge/9ca02c.wgsl | 45 + .../9ca02c.wgsl.expected.dxc.hlsl | 42 + .../9ca02c.wgsl.expected.fxc.hlsl | 42 + .../9ca02c.wgsl.expected.glsl | 79 + .../9ca02c.wgsl.expected.msl | 40 + .../9ca02c.wgsl.expected.spvasm | 110 + .../9ca02c.wgsl.expected.wgsl | 23 + .../979816.wgsl.expected.dxc.hlsl | 4 + .../979816.wgsl.expected.fxc.hlsl | 4 + .../979816.wgsl.expected.glsl | 4 + .../979816.wgsl.expected.msl | 4 + .../979816.wgsl.expected.spvasm | 4 + .../979816.wgsl.expected.wgsl | 4 + .../textureSampleBaseClampToEdge/7c04e6.wgsl | 46 + .../7c04e6.wgsl.expected.dxc.hlsl | 123 + .../7c04e6.wgsl.expected.fxc.hlsl | 123 + .../7c04e6.wgsl.expected.glsl | 223 + .../7c04e6.wgsl.expected.msl | 96 + .../7c04e6.wgsl.expected.spvasm | 280 + .../7c04e6.wgsl.expected.wgsl | 24 + .../textureSampleBaseClampToEdge/9ca02c.wgsl | 46 + .../9ca02c.wgsl.expected.dxc.hlsl | 43 + .../9ca02c.wgsl.expected.fxc.hlsl | 43 + .../9ca02c.wgsl.expected.glsl | 82 + .../9ca02c.wgsl.expected.msl | 41 + .../9ca02c.wgsl.expected.spvasm | 114 + .../9ca02c.wgsl.expected.wgsl | 24 + .../979816.wgsl.expected.dxc.hlsl | 4 + .../979816.wgsl.expected.fxc.hlsl | 4 + .../979816.wgsl.expected.glsl | 4 + .../979816.wgsl.expected.msl | 4 + .../979816.wgsl.expected.spvasm | 4 + .../979816.wgsl.expected.wgsl | 4 + 57 files changed, 6342 insertions(+), 2854 deletions(-) create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.wgsl diff --git a/docs/tint/origin-trial-changes.md b/docs/tint/origin-trial-changes.md index b78e7cd82c..3da2ed96fa 100644 --- a/docs/tint/origin-trial-changes.md +++ b/docs/tint/origin-trial-changes.md @@ -1,5 +1,15 @@ # Tint changes during Origin Trial +## Changes for M108 + +### New features + +* `textureSampleBaseClampToEdge()` has been implemented. [tint:1671](crbug.com/tint/1671) + +### Deprecated Features + +* The `external_texture` overload of `textureSampleLevel()` has been deprecated. Use `textureSampleBaseClampToEdge()` instead. [tint:1671](crbug.com/tint/1671) + ## Changes for M107 ### New features diff --git a/src/tint/intrinsics.def b/src/tint/intrinsics.def index 23e0dc86bc..db553a3269 100644 --- a/src/tint/intrinsics.def +++ b/src/tint/intrinsics.def @@ -659,7 +659,9 @@ fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2, array_index: i32, level: i32, @const offset: vec2) -> f32 fn textureSampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3, level: i32) -> f32 fn textureSampleLevel(texture: texture_depth_cube_array,sampler: sampler, coords: vec3, array_index: i32, level: i32) -> f32 -fn textureSampleLevel(texture: texture_external, sampler: sampler, coords: vec2) -> vec4 +@deprecated fn textureSampleLevel(texture: texture_external, sampler: sampler, coords: vec2) -> vec4 +fn textureSampleBaseClampToEdge(texture: texture_2d, sampler: sampler, coords: vec2) -> vec4 +fn textureSampleBaseClampToEdge(texture: texture_external, sampler: sampler, coords: vec2) -> vec4 fn textureStore(texture: texture_storage_1d, coords: i32, value: vec4) fn textureStore(texture: texture_storage_2d, coords: vec2, value: vec4) fn textureStore(texture: texture_storage_2d_array, coords: vec2, array_index: i32, value: vec4) diff --git a/src/tint/resolver/intrinsic_table.inl b/src/tint/resolver/intrinsic_table.inl index f74cb252d0..55eb8b9a87 100644 --- a/src/tint/resolver/intrinsic_table.inl +++ b/src/tint/resolver/intrinsic_table.inl @@ -2723,27 +2723,27 @@ constexpr MatcherIndex kMatcherIndices[] = { /* [13] */ 0, /* [14] */ 22, /* [15] */ 0, - /* [16] */ 0, + /* [16] */ 2, /* [17] */ 0, /* [18] */ 22, - /* [19] */ 0, - /* [20] */ 2, + /* [19] */ 1, + /* [20] */ 0, /* [21] */ 0, /* [22] */ 22, /* [23] */ 1, - /* [24] */ 0, + /* [24] */ 2, /* [25] */ 0, /* [26] */ 22, - /* [27] */ 1, - /* [28] */ 2, + /* [27] */ 0, + /* [28] */ 0, /* [29] */ 0, /* [30] */ 21, /* [31] */ 0, /* [32] */ 0, - /* [33] */ 42, + /* [33] */ 43, /* [34] */ 5, /* [35] */ 6, - /* [36] */ 43, + /* [36] */ 42, /* [37] */ 5, /* [38] */ 6, /* [39] */ 21, @@ -2803,148 +2803,148 @@ constexpr MatcherIndex kMatcherIndices[] = { /* [93] */ 21, /* [94] */ 0, /* [95] */ 6, - /* [96] */ 40, - /* [97] */ 3, - /* [98] */ 6, - /* [99] */ 46, - /* [100] */ 0, - /* [101] */ 0, - /* [102] */ 31, + /* [96] */ 46, + /* [97] */ 0, + /* [98] */ 0, + /* [99] */ 40, + /* [100] */ 3, + /* [101] */ 6, + /* [102] */ 10, /* [103] */ 7, /* [104] */ 10, - /* [105] */ 7, + /* [105] */ 1, /* [106] */ 10, /* [107] */ 0, /* [108] */ 10, - /* [109] */ 1, + /* [109] */ 8, /* [110] */ 10, - /* [111] */ 8, - /* [112] */ 10, - /* [113] */ 5, - /* [114] */ 9, - /* [115] */ 0, + /* [111] */ 5, + /* [112] */ 9, + /* [113] */ 0, + /* [114] */ 10, + /* [115] */ 6, /* [116] */ 10, - /* [117] */ 6, - /* [118] */ 10, - /* [119] */ 2, - /* [120] */ 11, - /* [121] */ 0, + /* [117] */ 2, + /* [118] */ 11, + /* [119] */ 0, + /* [120] */ 9, + /* [121] */ 2, /* [122] */ 9, - /* [123] */ 2, + /* [123] */ 1, /* [124] */ 9, - /* [125] */ 1, - /* [126] */ 9, - /* [127] */ 6, - /* [128] */ 11, - /* [129] */ 7, + /* [125] */ 6, + /* [126] */ 11, + /* [127] */ 7, + /* [128] */ 9, + /* [129] */ 5, /* [130] */ 9, - /* [131] */ 5, + /* [131] */ 8, /* [132] */ 9, - /* [133] */ 8, - /* [134] */ 9, - /* [135] */ 7, - /* [136] */ 45, + /* [133] */ 7, + /* [134] */ 45, + /* [135] */ 0, + /* [136] */ 28, /* [137] */ 0, - /* [138] */ 28, - /* [139] */ 0, - /* [140] */ 11, - /* [141] */ 1, - /* [142] */ 29, + /* [138] */ 11, + /* [139] */ 1, + /* [140] */ 29, + /* [141] */ 0, + /* [142] */ 30, /* [143] */ 0, - /* [144] */ 30, - /* [145] */ 0, - /* [146] */ 11, - /* [147] */ 8, - /* [148] */ 31, + /* [144] */ 11, + /* [145] */ 8, + /* [146] */ 31, + /* [147] */ 0, + /* [148] */ 32, /* [149] */ 0, - /* [150] */ 32, - /* [151] */ 0, - /* [152] */ 11, - /* [153] */ 5, - /* [154] */ 33, + /* [150] */ 11, + /* [151] */ 5, + /* [152] */ 33, + /* [153] */ 0, + /* [154] */ 34, /* [155] */ 0, - /* [156] */ 34, - /* [157] */ 0, + /* [156] */ 11, + /* [157] */ 6, /* [158] */ 11, - /* [159] */ 6, - /* [160] */ 11, - /* [161] */ 2, + /* [159] */ 2, + /* [160] */ 12, + /* [161] */ 0, /* [162] */ 12, - /* [163] */ 0, + /* [163] */ 7, /* [164] */ 12, - /* [165] */ 7, - /* [166] */ 12, - /* [167] */ 8, + /* [165] */ 8, + /* [166] */ 13, + /* [167] */ 0, /* [168] */ 13, - /* [169] */ 0, - /* [170] */ 13, - /* [171] */ 7, - /* [172] */ 47, - /* [173] */ 0, - /* [174] */ 13, - /* [175] */ 8, + /* [169] */ 7, + /* [170] */ 47, + /* [171] */ 0, + /* [172] */ 13, + /* [173] */ 8, + /* [174] */ 14, + /* [175] */ 0, /* [176] */ 14, - /* [177] */ 0, + /* [177] */ 7, /* [178] */ 14, - /* [179] */ 7, - /* [180] */ 14, - /* [181] */ 8, + /* [179] */ 8, + /* [180] */ 15, + /* [181] */ 0, /* [182] */ 15, - /* [183] */ 0, + /* [183] */ 7, /* [184] */ 15, - /* [185] */ 7, - /* [186] */ 15, - /* [187] */ 8, + /* [185] */ 8, + /* [186] */ 16, + /* [187] */ 0, /* [188] */ 16, - /* [189] */ 0, + /* [189] */ 7, /* [190] */ 16, - /* [191] */ 7, - /* [192] */ 16, - /* [193] */ 8, + /* [191] */ 8, + /* [192] */ 17, + /* [193] */ 0, /* [194] */ 17, - /* [195] */ 0, + /* [195] */ 7, /* [196] */ 17, - /* [197] */ 7, - /* [198] */ 17, - /* [199] */ 8, + /* [197] */ 8, + /* [198] */ 18, + /* [199] */ 0, /* [200] */ 18, - /* [201] */ 0, + /* [201] */ 7, /* [202] */ 18, - /* [203] */ 7, - /* [204] */ 18, - /* [205] */ 8, - /* [206] */ 19, + /* [203] */ 8, + /* [204] */ 19, + /* [205] */ 0, + /* [206] */ 49, /* [207] */ 0, - /* [208] */ 49, - /* [209] */ 0, - /* [210] */ 28, + /* [208] */ 28, + /* [209] */ 7, + /* [210] */ 29, /* [211] */ 7, - /* [212] */ 29, + /* [212] */ 30, /* [213] */ 7, - /* [214] */ 30, + /* [214] */ 19, /* [215] */ 7, /* [216] */ 19, - /* [217] */ 7, - /* [218] */ 19, - /* [219] */ 8, - /* [220] */ 20, - /* [221] */ 0, - /* [222] */ 32, + /* [217] */ 8, + /* [218] */ 31, + /* [219] */ 7, + /* [220] */ 32, + /* [221] */ 7, + /* [222] */ 33, /* [223] */ 7, - /* [224] */ 33, - /* [225] */ 7, + /* [224] */ 20, + /* [225] */ 0, /* [226] */ 20, /* [227] */ 7, /* [228] */ 20, /* [229] */ 8, - /* [230] */ 39, - /* [231] */ 26, - /* [232] */ 27, - /* [233] */ 38, - /* [234] */ 37, - /* [235] */ 36, - /* [236] */ 35, - /* [237] */ 44, + /* [230] */ 26, + /* [231] */ 27, + /* [232] */ 38, + /* [233] */ 37, + /* [234] */ 36, + /* [235] */ 35, + /* [236] */ 44, + /* [237] */ 39, }; // Assert that the MatcherIndex is big enough to index all the matchers, plus @@ -3282,17 +3282,17 @@ constexpr ParameterInfo kParameters[] = { { /* [65] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[214], + /* matcher indices */ &kMatcherIndices[212], }, { /* [66] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [67] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [68] */ @@ -3302,92 +3302,92 @@ constexpr ParameterInfo kParameters[] = { { /* [69] */ /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [70] */ /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [71] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { /* [72] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], + /* matcher indices */ &kMatcherIndices[210], }, { /* [73] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[230], }, { /* [74] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [75] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[132], }, { /* [76] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[132], }, { /* [77] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { /* [78] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[102], + /* matcher indices */ &kMatcherIndices[222], }, { /* [79] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [80] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[102], }, { /* [81] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[104], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [82] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[104], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[102], }, { /* [83] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[112], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[102], }, { /* [84] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], + /* matcher indices */ &kMatcherIndices[234], }, { /* [85] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[231], }, { /* [86] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [87] */ @@ -3402,22 +3402,22 @@ constexpr ParameterInfo kParameters[] = { { /* [89] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { /* [90] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[224], + /* matcher indices */ &kMatcherIndices[212], }, { /* [91] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [92] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [93] */ @@ -3426,103 +3426,103 @@ constexpr ParameterInfo kParameters[] = { }, { /* [94] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[104], - }, - { - /* [95] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[104], - }, - { - /* [96] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [97] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [98] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [99] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [100] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [101] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [102] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], - }, - { - /* [103] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], - }, - { - /* [104] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [105] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [106] */ - /* usage */ ParameterUsage::kDepthRef, + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[4], }, { - /* [107] */ + /* [95] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { - /* [108] */ + /* [96] */ /* usage */ ParameterUsage::kComponent, /* matcher indices */ &kMatcherIndices[34], }, { - /* [109] */ + /* [97] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[144], + /* matcher indices */ &kMatcherIndices[142], }, { - /* [110] */ + /* [98] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { - /* [111] */ + /* [99] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { - /* [112] */ + /* [100] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[34], }, { - /* [113] */ + /* [101] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], + }, + { + /* [102] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[218], + }, + { + /* [103] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [104] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[102], + }, + { + /* [105] */ + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[102], + }, + { + /* [106] */ + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[102], + }, + { + /* [107] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[110], + }, + { + /* [108] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[212], + }, + { + /* [109] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [110] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [111] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], + }, + { + /* [112] */ + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [113] */ + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[132], }, { /* [114] */ @@ -3556,38 +3556,38 @@ constexpr ParameterInfo kParameters[] = { }, { /* [120] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [121] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [122] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [123] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [124] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [125] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [126] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[214], + /* matcher indices */ &kMatcherIndices[234], }, { /* [127] */ @@ -3597,7 +3597,7 @@ constexpr ParameterInfo kParameters[] = { { /* [128] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [129] */ @@ -3606,28 +3606,28 @@ constexpr ParameterInfo kParameters[] = { }, { /* [130] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[4], }, { /* [131] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[128], }, { /* [132] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[214], + /* matcher indices */ &kMatcherIndices[212], }, { /* [133] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [134] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [135] */ @@ -3642,42 +3642,42 @@ constexpr ParameterInfo kParameters[] = { { /* [137] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { /* [138] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[212], + /* matcher indices */ &kMatcherIndices[234], }, { /* [139] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [140] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [141] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [142] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], }, { /* [143] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { /* [144] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[214], + /* matcher indices */ &kMatcherIndices[234], }, { /* [145] */ @@ -3687,7 +3687,7 @@ constexpr ParameterInfo kParameters[] = { { /* [146] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [147] */ @@ -3696,103 +3696,103 @@ constexpr ParameterInfo kParameters[] = { }, { /* [148] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[4], }, { /* [149] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { /* [150] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* matcher indices */ &kMatcherIndices[222], }, { /* [151] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[230], }, { /* [152] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [153] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [154] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[4], }, { /* [155] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], + /* matcher indices */ &kMatcherIndices[218], }, { /* [156] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[230], }, { /* [157] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [158] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [159] */ - /* usage */ ParameterUsage::kDepthRef, + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[4], }, + { + /* [159] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[110], + }, { /* [160] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[234], }, { /* [161] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[154], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [162] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], }, { /* [163] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [164] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[128], }, { /* [165] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], + /* matcher indices */ &kMatcherIndices[234], }, { /* [166] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [167] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [168] */ @@ -3802,62 +3802,62 @@ constexpr ParameterInfo kParameters[] = { { /* [169] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { /* [170] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[233], - }, - { - /* [171] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], - }, - { - /* [172] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], - }, - { - /* [173] */ - /* usage */ ParameterUsage::kArrayIndex, + /* usage */ ParameterUsage::kComponent, /* matcher indices */ &kMatcherIndices[34], }, + { + /* [171] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[152], + }, + { + /* [172] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [173] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[102], + }, { /* [174] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [175] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[233], + /* matcher indices */ &kMatcherIndices[235], }, { /* [176] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[231], }, { /* [177] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [178] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [179] */ /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[4], }, + { + /* [179] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[128], + }, { /* [180] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[212], + /* matcher indices */ &kMatcherIndices[232], }, { /* [181] */ @@ -3867,57 +3867,57 @@ constexpr ParameterInfo kParameters[] = { { /* [182] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [183] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [184] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [185] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], - }, - { - /* [186] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], - }, - { - /* [187] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [188] */ /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[4], }, + { + /* [185] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[234], + }, + { + /* [186] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[231], + }, + { + /* [187] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [188] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], + }, { /* [189] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[4], }, { /* [190] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], + /* matcher indices */ &kMatcherIndices[234], }, { /* [191] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[231], }, { /* [192] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [193] */ @@ -3932,7 +3932,7 @@ constexpr ParameterInfo kParameters[] = { { /* [195] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[102], + /* matcher indices */ &kMatcherIndices[235], }, { /* [196] */ @@ -3942,82 +3942,82 @@ constexpr ParameterInfo kParameters[] = { { /* [197] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [198] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[4], }, { /* [199] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[112], + /* matcher indices */ &kMatcherIndices[128], }, { /* [200] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[214], + /* matcher indices */ &kMatcherIndices[210], }, { /* [201] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [202] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [203] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[132], }, { /* [204] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[132], }, { /* [205] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[232], }, { /* [206] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[144], - }, - { - /* [207] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[231], }, { - /* [208] */ + /* [207] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { - /* [209] */ + /* [208] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[34], }, + { + /* [209] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[4], + }, { /* [210] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[233], + /* matcher indices */ &kMatcherIndices[232], }, { /* [211] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[231], }, { /* [212] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[102], }, { /* [213] */ @@ -4031,68 +4031,68 @@ constexpr ParameterInfo kParameters[] = { }, { /* [215] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[212], + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[34], }, { /* [216] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[142], }, { /* [217] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [218] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], }, { /* [219] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [220] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[102], + /* matcher indices */ &kMatcherIndices[212], }, { /* [221] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [222] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [223] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[104], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [224] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[104], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[4], }, { /* [225] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[224], + /* matcher indices */ &kMatcherIndices[212], }, { /* [226] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [227] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [228] */ @@ -4101,38 +4101,38 @@ constexpr ParameterInfo kParameters[] = { }, { /* [229] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[128], }, { /* [230] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[214], + /* matcher indices */ &kMatcherIndices[220], }, { /* [231] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [232] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [233] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[102], }, { /* [234] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[102], }, { /* [235] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[222], + /* matcher indices */ &kMatcherIndices[234], }, { /* [236] */ @@ -4142,67 +4142,67 @@ constexpr ParameterInfo kParameters[] = { { /* [237] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [238] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[104], - }, - { - /* [239] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[104], - }, - { - /* [240] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [241] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[142], - }, - { - /* [242] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], - }, - { - /* [243] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [244] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [245] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], - }, - { - /* [246] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], - }, - { - /* [247] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [248] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[34], }, + { + /* [239] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[4], + }, + { + /* [240] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[210], + }, + { + /* [241] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [242] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [243] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[4], + }, + { + /* [244] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[128], + }, + { + /* [245] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[210], + }, + { + /* [246] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [247] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [248] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[4], + }, { /* [249] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { /* [250] */ @@ -4212,62 +4212,62 @@ constexpr ParameterInfo kParameters[] = { { /* [251] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [252] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [253] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[4], - }, - { - /* [254] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [255] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], - }, - { - /* [256] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], - }, - { - /* [257] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [258] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[34], }, { - /* [259] */ - /* usage */ ParameterUsage::kDepthRef, + /* [254] */ + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[4], }, + { + /* [255] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[34], + }, + { + /* [256] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[140], + }, + { + /* [257] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [258] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [259] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[128], + }, { /* [260] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[214], + /* matcher indices */ &kMatcherIndices[222], }, { /* [261] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [262] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [263] */ @@ -4276,63 +4276,63 @@ constexpr ParameterInfo kParameters[] = { }, { /* [264] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[4], }, { /* [265] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* matcher indices */ &kMatcherIndices[232], }, { /* [266] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[230], }, { /* [267] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [268] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[4], - }, - { - /* [269] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [270] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], - }, - { - /* [271] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], - }, - { - /* [272] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [273] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[34], }, { - /* [274] */ + /* [269] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[34], }, + { + /* [270] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[218], + }, + { + /* [271] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [272] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[102], + }, + { + /* [273] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[4], + }, + { + /* [274] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[110], + }, { /* [275] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* matcher indices */ &kMatcherIndices[235], }, { /* [276] */ @@ -4342,32 +4342,32 @@ constexpr ParameterInfo kParameters[] = { { /* [277] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [278] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[4], }, { /* [279] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { /* [280] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[224], + /* matcher indices */ &kMatcherIndices[234], }, { /* [281] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [282] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [283] */ @@ -4376,93 +4376,93 @@ constexpr ParameterInfo kParameters[] = { }, { /* [284] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], }, { /* [285] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[233], + /* matcher indices */ &kMatcherIndices[235], }, { /* [286] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [287] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [288] */ - /* usage */ ParameterUsage::kArrayIndex, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[34], }, { /* [289] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[128], }, { /* [290] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[102], + /* matcher indices */ &kMatcherIndices[218], }, { /* [291] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [292] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[102], }, { /* [293] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[102], }, { /* [294] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[112], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[102], }, { /* [295] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[222], + /* matcher indices */ &kMatcherIndices[235], }, { /* [296] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [297] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [298] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[34], }, { /* [299] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[102], + /* matcher indices */ &kMatcherIndices[220], }, { /* [300] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [301] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[102], }, { /* [302] */ @@ -4472,17 +4472,17 @@ constexpr ParameterInfo kParameters[] = { { /* [303] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* matcher indices */ &kMatcherIndices[233], }, { /* [304] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [305] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [306] */ @@ -4492,177 +4492,177 @@ constexpr ParameterInfo kParameters[] = { { /* [307] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[234], + /* matcher indices */ &kMatcherIndices[218], }, { /* [308] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [309] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[102], }, { /* [310] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], + /* matcher indices */ &kMatcherIndices[4], }, { /* [311] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* matcher indices */ &kMatcherIndices[232], }, { /* [312] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [313] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [314] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [315] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[212], + /* matcher indices */ &kMatcherIndices[234], }, { /* [316] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [317] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [318] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [319] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[224], + /* matcher indices */ &kMatcherIndices[235], }, { /* [320] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [321] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [322] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[128], }, { /* [323] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[102], + /* matcher indices */ &kMatcherIndices[222], }, { /* [324] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [325] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[102], }, { /* [326] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[112], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [327] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[72], + /* matcher indices */ &kMatcherIndices[210], }, { /* [328] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [329] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], }, { /* [330] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[128], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[4], }, { /* [331] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[214], + /* matcher indices */ &kMatcherIndices[72], }, { /* [332] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[128], }, { /* [333] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [334] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[34], }, + { + /* [334] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[126], + }, { /* [335] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[212], + /* matcher indices */ &kMatcherIndices[218], }, { /* [336] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [337] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [338] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[110], }, { /* [339] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[233], + /* matcher indices */ &kMatcherIndices[212], }, { /* [340] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [341] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [342] */ @@ -4672,77 +4672,77 @@ constexpr ParameterInfo kParameters[] = { { /* [343] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[212], - }, - { - /* [344] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], - }, - { - /* [345] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [346] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[4], - }, - { - /* [347] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[54], }, { - /* [348] */ + /* [344] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { - /* [349] */ + /* [345] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[34], }, { - /* [350] */ + /* [346] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[152], + /* matcher indices */ &kMatcherIndices[150], + }, + { + /* [347] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[218], + }, + { + /* [348] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [349] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[102], + }, + { + /* [350] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[4], }, { /* [351] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[234], + /* matcher indices */ &kMatcherIndices[210], }, { /* [352] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[230], }, { /* [353] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [354] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[128], }, { /* [355] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* matcher indices */ &kMatcherIndices[235], }, { /* [356] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[231], }, { /* [357] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[132], }, { /* [358] */ @@ -4752,12 +4752,12 @@ constexpr ParameterInfo kParameters[] = { { /* [359] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[33], + /* matcher indices */ &kMatcherIndices[36], }, { /* [360] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[128], }, { /* [361] */ @@ -4767,62 +4767,62 @@ constexpr ParameterInfo kParameters[] = { { /* [362] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[158], + /* matcher indices */ &kMatcherIndices[156], }, { /* [363] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[144], + /* matcher indices */ &kMatcherIndices[233], }, { /* [364] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[231], }, { /* [365] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[102], }, { /* [366] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [367] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], - }, - { - /* [368] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], - }, - { - /* [369] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [370] */ /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[4], }, + { + /* [367] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[142], + }, + { + /* [368] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[128], + }, + { + /* [369] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[34], + }, + { + /* [370] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], + }, { /* [371] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[234], + /* matcher indices */ &kMatcherIndices[235], }, { /* [372] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[231], }, { /* [373] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [374] */ @@ -4832,17 +4832,17 @@ constexpr ParameterInfo kParameters[] = { { /* [375] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[233], + /* matcher indices */ &kMatcherIndices[234], }, { /* [376] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [377] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [378] */ @@ -4852,82 +4852,82 @@ constexpr ParameterInfo kParameters[] = { { /* [379] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], + /* matcher indices */ &kMatcherIndices[220], }, { /* [380] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [381] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [382] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[4], }, { /* [383] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* matcher indices */ &kMatcherIndices[234], }, { /* [384] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[128], }, { /* [385] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [386] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [387] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], - }, - { - /* [388] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [389] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[34], }, { - /* [390] */ + /* [386] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[34], }, { - /* [391] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [392] */ + /* [387] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[150], + /* matcher indices */ &kMatcherIndices[233], }, { - /* [393] */ + /* [388] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[231], }, { - /* [394] */ + /* [389] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[102], + }, + { + /* [390] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[4], + }, + { + /* [391] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[235], + }, + { + /* [392] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [393] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [394] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[128], }, { /* [395] */ @@ -4972,17 +4972,17 @@ constexpr ParameterInfo kParameters[] = { { /* [403] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[234], + /* matcher indices */ &kMatcherIndices[235], }, { /* [404] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* matcher indices */ &kMatcherIndices[231], }, { /* [405] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [406] */ @@ -4991,83 +4991,83 @@ constexpr ParameterInfo kParameters[] = { }, { /* [407] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [408] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [409] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [410] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [411] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[114], - }, - { - /* [412] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[114], - }, - { - /* [413] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[114], - }, - { - /* [414] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[114], - }, - { - /* [415] */ /* usage */ ParameterUsage::kComponent, /* matcher indices */ &kMatcherIndices[34], }, { - /* [416] */ + /* [408] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[142], + /* matcher indices */ &kMatcherIndices[148], }, { - /* [417] */ + /* [409] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [410] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[102], + }, + { + /* [411] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[233], + }, + { + /* [412] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[231], }, { - /* [418] */ + /* [413] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], + }, + { + /* [414] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[4], + }, + { + /* [415] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [416] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [417] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [418] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [419] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[112], }, { /* [420] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[232], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[112], }, { /* [421] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[112], }, { /* [422] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[112], }, { /* [423] */ @@ -5111,38 +5111,38 @@ constexpr ParameterInfo kParameters[] = { }, { /* [431] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[222], + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[34], }, { /* [432] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[140], }, { /* [433] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [434] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], }, { /* [435] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[102], + /* matcher indices */ &kMatcherIndices[210], }, { /* [436] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [437] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* matcher indices */ &kMatcherIndices[132], }, { /* [438] */ @@ -5152,37 +5152,37 @@ constexpr ParameterInfo kParameters[] = { { /* [439] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[120], + /* matcher indices */ &kMatcherIndices[118], }, { /* [440] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[120], + /* matcher indices */ &kMatcherIndices[118], }, { /* [441] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[120], + /* matcher indices */ &kMatcherIndices[118], }, { /* [442] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[120], + /* matcher indices */ &kMatcherIndices[118], }, { /* [443] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], + /* matcher indices */ &kMatcherIndices[232], }, { /* [444] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], }, { /* [445] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[102], }, { /* [446] */ @@ -5251,93 +5251,93 @@ constexpr ParameterInfo kParameters[] = { }, { /* [459] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[234], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[118], }, { /* [460] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[118], }, { /* [461] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[118], }, { /* [462] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[120], - }, - { - /* [463] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[120], - }, - { - /* [464] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[120], - }, - { - /* [465] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[48], - }, - { - /* [466] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [467] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[158], - }, - { - /* [468] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[237], - }, - { - /* [469] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], - }, - { - /* [470] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [471] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[236], }, { - /* [472] */ + /* [463] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [464] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [465] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[210], + }, + { + /* [466] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [467] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [468] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[233], + }, + { + /* [469] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], + }, + { + /* [470] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[102], + }, + { + /* [471] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[51], + }, + { + /* [472] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[110], }, { /* [473] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[150], }, { /* [474] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[96], + /* matcher indices */ &kMatcherIndices[236], }, { /* [475] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [476] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[128], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], }, { /* [477] */ @@ -5387,197 +5387,197 @@ constexpr ParameterInfo kParameters[] = { { /* [486] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[222], + /* matcher indices */ &kMatcherIndices[99], }, { /* [487] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[34], }, { /* [488] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[126], }, { /* [489] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[75], + /* matcher indices */ &kMatcherIndices[235], }, { /* [490] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [491] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[128], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], }, { /* [492] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[102], + /* matcher indices */ &kMatcherIndices[75], }, { /* [493] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[128], }, { /* [494] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[126], }, { /* [495] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[66], + /* matcher indices */ &kMatcherIndices[220], }, { /* [496] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[112], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [497] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[128], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[102], }, { /* [498] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[63], + /* matcher indices */ &kMatcherIndices[66], }, { /* [499] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[34], + /* matcher indices */ &kMatcherIndices[110], }, { /* [500] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[152], + /* matcher indices */ &kMatcherIndices[126], }, { /* [501] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[57], + /* matcher indices */ &kMatcherIndices[218], }, { /* [502] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [503] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[152], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[102], }, { /* [504] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[212], + /* matcher indices */ &kMatcherIndices[63], }, { /* [505] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[34], }, { /* [506] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[150], }, { /* [507] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[210], + /* matcher indices */ &kMatcherIndices[57], }, { /* [508] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[128], }, { /* [509] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[150], }, { /* [510] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[51], + /* matcher indices */ &kMatcherIndices[48], }, { /* [511] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[112], + /* matcher indices */ &kMatcherIndices[34], }, { /* [512] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[152], + /* matcher indices */ &kMatcherIndices[156], }, { /* [513] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[45], + /* matcher indices */ &kMatcherIndices[210], }, { /* [514] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [515] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[158], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], }, { /* [516] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[36], + /* matcher indices */ &kMatcherIndices[208], }, { /* [517] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[112], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [518] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[158], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[4], }, { /* [519] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[138], + /* matcher indices */ &kMatcherIndices[45], }, { /* [520] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[34], + /* matcher indices */ &kMatcherIndices[128], }, { /* [521] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[156], }, { /* [522] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[142], + /* matcher indices */ &kMatcherIndices[33], }, { /* [523] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[110], }, { /* [524] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[156], }, { /* [525] */ @@ -5597,12 +5597,12 @@ constexpr ParameterInfo kParameters[] = { { /* [528] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[148], + /* matcher indices */ &kMatcherIndices[136], }, { /* [529] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[112], + /* matcher indices */ &kMatcherIndices[34], }, { /* [530] */ @@ -5611,78 +5611,78 @@ constexpr ParameterInfo kParameters[] = { }, { /* [531] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[140], }, { /* [532] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[128], }, { /* [533] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], }, { /* [534] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[234], + /* matcher indices */ &kMatcherIndices[146], }, { /* [535] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[110], }, { /* [536] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[104], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], }, { /* [537] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [538] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [539] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [540] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[156], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [541] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [542] */ - /* usage */ ParameterUsage::kSampleIndex, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [543] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* matcher indices */ &kMatcherIndices[233], }, { /* [544] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [545] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[102], }, { /* [546] */ @@ -5697,7 +5697,7 @@ constexpr ParameterInfo kParameters[] = { { /* [548] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[16], }, { /* [549] */ @@ -5712,7 +5712,7 @@ constexpr ParameterInfo kParameters[] = { { /* [551] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[16], }, { /* [552] */ @@ -5732,67 +5732,67 @@ constexpr ParameterInfo kParameters[] = { { /* [555] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* matcher indices */ &kMatcherIndices[154], }, { /* [556] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[231], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[128], }, { /* [557] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [558] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[230], - }, - { - /* [559] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [560] */ /* usage */ ParameterUsage::kSampleIndex, /* matcher indices */ &kMatcherIndices[34], }, + { + /* [558] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[235], + }, + { + /* [559] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[128], + }, + { + /* [560] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], + }, { /* [561] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[237], }, { /* [562] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[128], }, { /* [563] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kSampleIndex, + /* matcher indices */ &kMatcherIndices[34], }, { /* [564] */ - /* usage */ ParameterUsage::kXy, - /* matcher indices */ &kMatcherIndices[114], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[235], }, { /* [565] */ - /* usage */ ParameterUsage::kZ, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[230], }, { /* [566] */ - /* usage */ ParameterUsage::kW, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[132], }, { /* [567] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[0], }, { /* [568] */ @@ -5806,18 +5806,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [570] */ - /* usage */ ParameterUsage::kX, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kXy, + /* matcher indices */ &kMatcherIndices[112], }, { /* [571] */ - /* usage */ ParameterUsage::kY, + /* usage */ ParameterUsage::kZ, /* matcher indices */ &kMatcherIndices[1], }, { /* [572] */ - /* usage */ ParameterUsage::kZw, - /* matcher indices */ &kMatcherIndices[114], + /* usage */ ParameterUsage::kW, + /* matcher indices */ &kMatcherIndices[1], }, { /* [573] */ @@ -5851,68 +5851,68 @@ constexpr ParameterInfo kParameters[] = { }, { /* [579] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[114], - }, - { - /* [580] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[114], - }, - { - /* [581] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[114], - }, - { - /* [582] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[106], - }, - { - /* [583] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[106], - }, - { - /* [584] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[106], - }, - { - /* [585] */ /* usage */ ParameterUsage::kX, /* matcher indices */ &kMatcherIndices[1], }, { - /* [586] */ + /* [580] */ /* usage */ ParameterUsage::kYz, - /* matcher indices */ &kMatcherIndices[114], + /* matcher indices */ &kMatcherIndices[112], }, { - /* [587] */ + /* [581] */ /* usage */ ParameterUsage::kW, /* matcher indices */ &kMatcherIndices[1], }, { - /* [588] */ + /* [582] */ /* usage */ ParameterUsage::kX, /* matcher indices */ &kMatcherIndices[1], }, { - /* [589] */ + /* [583] */ /* usage */ ParameterUsage::kY, /* matcher indices */ &kMatcherIndices[1], }, + { + /* [584] */ + /* usage */ ParameterUsage::kZw, + /* matcher indices */ &kMatcherIndices[112], + }, + { + /* [585] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[112], + }, + { + /* [586] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[112], + }, + { + /* [587] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[112], + }, + { + /* [588] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[106], + }, + { + /* [589] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[106], + }, { /* [590] */ - /* usage */ ParameterUsage::kZ, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[106], }, { /* [591] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [592] */ @@ -5922,72 +5922,72 @@ constexpr ParameterInfo kParameters[] = { { /* [593] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[120], + /* matcher indices */ &kMatcherIndices[1], }, { /* [594] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[120], - }, - { - /* [595] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[106], - }, - { - /* [596] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[106], - }, - { - /* [597] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[114], - }, - { - /* [598] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[114], - }, - { - /* [599] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [600] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [601] */ /* usage */ ParameterUsage::kX, /* matcher indices */ &kMatcherIndices[1], }, + { + /* [595] */ + /* usage */ ParameterUsage::kY, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [596] */ + /* usage */ ParameterUsage::kZ, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [597] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [598] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [599] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[118], + }, + { + /* [600] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[118], + }, + { + /* [601] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[106], + }, { /* [602] */ - /* usage */ ParameterUsage::kZyw, + /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[106], }, { /* [603] */ - /* usage */ ParameterUsage::kXyz, - /* matcher indices */ &kMatcherIndices[106], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[112], }, { /* [604] */ - /* usage */ ParameterUsage::kW, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[112], }, { /* [605] */ - /* usage */ ParameterUsage::kXy, - /* matcher indices */ &kMatcherIndices[114], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [606] */ - /* usage */ ParameterUsage::kZw, - /* matcher indices */ &kMatcherIndices[114], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [607] */ @@ -5996,58 +5996,58 @@ constexpr ParameterInfo kParameters[] = { }, { /* [608] */ - /* usage */ ParameterUsage::kYz, - /* matcher indices */ &kMatcherIndices[114], + /* usage */ ParameterUsage::kZyw, + /* matcher indices */ &kMatcherIndices[106], }, { /* [609] */ - /* usage */ ParameterUsage::kXy, - /* matcher indices */ &kMatcherIndices[114], + /* usage */ ParameterUsage::kXyz, + /* matcher indices */ &kMatcherIndices[106], }, { /* [610] */ - /* usage */ ParameterUsage::kZ, + /* usage */ ParameterUsage::kW, /* matcher indices */ &kMatcherIndices[1], }, { /* [611] */ + /* usage */ ParameterUsage::kXy, + /* matcher indices */ &kMatcherIndices[112], + }, + { + /* [612] */ + /* usage */ ParameterUsage::kZw, + /* matcher indices */ &kMatcherIndices[112], + }, + { + /* [613] */ /* usage */ ParameterUsage::kX, /* matcher indices */ &kMatcherIndices[1], }, - { - /* [612] */ - /* usage */ ParameterUsage::kY, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [613] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, { /* [614] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kYz, + /* matcher indices */ &kMatcherIndices[112], }, { /* [615] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* usage */ ParameterUsage::kXy, + /* matcher indices */ &kMatcherIndices[112], }, { /* [616] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[93], + /* usage */ ParameterUsage::kZ, + /* matcher indices */ &kMatcherIndices[1], }, { /* [617] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* usage */ ParameterUsage::kX, + /* matcher indices */ &kMatcherIndices[1], }, { /* [618] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* usage */ ParameterUsage::kY, + /* matcher indices */ &kMatcherIndices[1], }, { /* [619] */ @@ -6057,127 +6057,127 @@ constexpr ParameterInfo kParameters[] = { { /* [620] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* matcher indices */ &kMatcherIndices[1], }, { /* [621] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[138], - }, - { - /* [622] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [623] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[30], }, { - /* [624] */ + /* [622] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[93], }, { - /* [625] */ + /* [623] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[142], + /* matcher indices */ &kMatcherIndices[136], }, { - /* [626] */ + /* [624] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[34], }, { - /* [627] */ + /* [625] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[1], }, { - /* [628] */ + /* [626] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[35], }, { - /* [629] */ + /* [627] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[144], + /* matcher indices */ &kMatcherIndices[140], }, { - /* [630] */ + /* [628] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[34], }, { - /* [631] */ + /* [629] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[30], }, + { + /* [630] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [631] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[142], + }, { /* [632] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], + }, + { + /* [633] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [634] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[35], + }, + { + /* [635] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[146], + }, + { + /* [636] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], + }, + { + /* [637] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[30], }, { - /* [633] */ + /* [638] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [639] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[148], }, - { - /* [634] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [635] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [636] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [637] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[150], - }, - { - /* [638] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [639] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, { /* [640] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], }, { /* [641] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[154], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [642] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [643] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[152], }, { /* [644] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], }, { /* [645] */ @@ -6191,44 +6191,44 @@ constexpr ParameterInfo kParameters[] = { }, { /* [647] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [648] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [649] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [650] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [651] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[235], }, { - /* [652] */ + /* [650] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[34], }, { - /* [653] */ + /* [651] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[30], }, { - /* [654] */ + /* [652] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[30], }, + { + /* [653] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[234], + }, + { + /* [654] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], + }, { /* [655] */ /* usage */ ParameterUsage::kNone, @@ -6241,43 +6241,43 @@ constexpr ParameterInfo kParameters[] = { }, { /* [657] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [658] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [659] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[233], }, { - /* [660] */ + /* [658] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[34], }, { - /* [661] */ + /* [659] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [660] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [661] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[232], }, { /* [662] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[34], }, { /* [663] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [664] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [665] */ @@ -6292,32 +6292,32 @@ constexpr ParameterInfo kParameters[] = { { /* [667] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[30], }, { /* [668] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[30], }, { /* [669] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[1], }, { /* [670] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[1], }, { /* [671] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[16], }, { /* [672] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[16], }, { /* [673] */ @@ -6332,82 +6332,82 @@ constexpr ParameterInfo kParameters[] = { { /* [675] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[30], }, { /* [676] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[30], }, { /* [677] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[1], }, { /* [678] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[1], }, { /* [679] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[16], }, { /* [680] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[16], }, { /* [681] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [682] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [683] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [684] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [685] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[39], }, { /* [686] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[39], }, { /* [687] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[16], }, { /* [688] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[16], }, { /* [689] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [690] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [691] */ @@ -6417,47 +6417,47 @@ constexpr ParameterInfo kParameters[] = { { /* [692] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [693] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[39], }, { /* [694] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[39], }, { /* [695] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[16], }, { /* [696] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[16], }, { /* [697] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [698] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [699] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [700] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [701] */ @@ -6477,7 +6477,7 @@ constexpr ParameterInfo kParameters[] = { { /* [704] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [705] */ @@ -6492,12 +6492,12 @@ constexpr ParameterInfo kParameters[] = { { /* [707] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [708] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [709] */ @@ -6512,47 +6512,47 @@ constexpr ParameterInfo kParameters[] = { { /* [711] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[18], + /* matcher indices */ &kMatcherIndices[1], }, { /* [712] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[22], + /* matcher indices */ &kMatcherIndices[30], }, { /* [713] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[30], }, { /* [714] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[30], }, { /* [715] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[1], }, { /* [716] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [717] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[14], }, { /* [718] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[18], }, { /* [719] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[69], }, { /* [720] */ @@ -6562,7 +6562,7 @@ constexpr ParameterInfo kParameters[] = { { /* [721] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[10], }, { /* [722] */ @@ -6572,7 +6572,7 @@ constexpr ParameterInfo kParameters[] = { { /* [723] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[10], }, { /* [724] */ @@ -6582,12 +6582,12 @@ constexpr ParameterInfo kParameters[] = { { /* [725] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [726] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[10], }, { /* [727] */ @@ -6597,22 +6597,22 @@ constexpr ParameterInfo kParameters[] = { { /* [728] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [729] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[30], }, { /* [730] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[1], }, { /* [731] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [732] */ @@ -6622,7 +6622,7 @@ constexpr ParameterInfo kParameters[] = { { /* [733] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [734] */ @@ -6632,12 +6632,12 @@ constexpr ParameterInfo kParameters[] = { { /* [735] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[10], }, { /* [736] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[10], }, { /* [737] */ @@ -6647,22 +6647,22 @@ constexpr ParameterInfo kParameters[] = { { /* [738] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [739] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[30], }, { /* [740] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[1], }, { /* [741] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [742] */ @@ -6672,7 +6672,7 @@ constexpr ParameterInfo kParameters[] = { { /* [743] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [744] */ @@ -6682,27 +6682,27 @@ constexpr ParameterInfo kParameters[] = { { /* [745] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[10], }, { /* [746] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[10], }, { /* [747] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [748] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [749] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [750] */ @@ -6712,7 +6712,7 @@ constexpr ParameterInfo kParameters[] = { { /* [751] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[30], }, { /* [752] */ @@ -6722,17 +6722,17 @@ constexpr ParameterInfo kParameters[] = { { /* [753] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[30], }, { /* [754] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [755] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[1], }, { /* [756] */ @@ -6742,27 +6742,27 @@ constexpr ParameterInfo kParameters[] = { { /* [757] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[30], }, { /* [758] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [759] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[0], }, { /* [760] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [761] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[0], }, { /* [762] */ @@ -6772,17 +6772,17 @@ constexpr ParameterInfo kParameters[] = { { /* [763] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[0], }, { /* [764] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [765] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[0], }, { /* [766] */ @@ -6792,17 +6792,17 @@ constexpr ParameterInfo kParameters[] = { { /* [767] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[30], }, { /* [768] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [769] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[1], }, { /* [770] */ @@ -6812,17 +6812,17 @@ constexpr ParameterInfo kParameters[] = { { /* [771] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[30], }, { /* [772] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [773] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[1], }, { /* [774] */ @@ -6831,153 +6831,153 @@ constexpr ParameterInfo kParameters[] = { }, { /* [775] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[237], - }, - { - /* [776] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [777] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[234], - }, - { - /* [778] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [779] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [780] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[90], - }, - { - /* [781] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [782] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[34], - }, - { - /* [783] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[106], - }, - { - /* [784] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[106], - }, - { - /* [785] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [786] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [787] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[0], }, { - /* [788] */ + /* [776] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[1], }, + { + /* [777] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], + }, + { + /* [778] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [779] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], + }, + { + /* [780] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [781] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], + }, + { + /* [782] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [783] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], + }, + { + /* [784] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [785] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[236], + }, + { + /* [786] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[128], + }, + { + /* [787] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [788] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[90], + }, { /* [789] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [790] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[34], }, { /* [791] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[106], }, { /* [792] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[106], }, { /* [793] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* matcher indices */ &kMatcherIndices[1], }, { /* [794] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* matcher indices */ &kMatcherIndices[1], }, { /* [795] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* matcher indices */ &kMatcherIndices[30], }, { /* [796] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* matcher indices */ &kMatcherIndices[30], }, { /* [797] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[226], + /* matcher indices */ &kMatcherIndices[30], }, { /* [798] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[30], }, { /* [799] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[35], }, { /* [800] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[35], }, { /* [801] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[35], }, { /* [802] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[35], }, { /* [803] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[236], }, { /* [804] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[4], }, { /* [805] */ @@ -7012,7 +7012,7 @@ constexpr ParameterInfo kParameters[] = { { /* [811] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[60], + /* matcher indices */ &kMatcherIndices[30], }, { /* [812] */ @@ -7022,32 +7022,32 @@ constexpr ParameterInfo kParameters[] = { { /* [813] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[30], }, { /* [814] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[60], + /* matcher indices */ &kMatcherIndices[1], }, { /* [815] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[30], }, { /* [816] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[60], + /* matcher indices */ &kMatcherIndices[1], }, { /* [817] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[60], }, { /* [818] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[60], + /* matcher indices */ &kMatcherIndices[1], }, { /* [819] */ @@ -7077,52 +7077,52 @@ constexpr ParameterInfo kParameters[] = { { /* [824] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[60], }, { /* [825] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[60], + /* matcher indices */ &kMatcherIndices[4], }, { /* [826] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[60], }, { /* [827] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[60], + /* matcher indices */ &kMatcherIndices[4], }, { /* [828] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[60], }, { /* [829] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[14], + /* matcher indices */ &kMatcherIndices[4], }, { /* [830] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[4], }, { /* [831] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[60], }, { /* [832] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[4], }, { /* [833] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[60], }, { /* [834] */ @@ -7132,12 +7132,12 @@ constexpr ParameterInfo kParameters[] = { { /* [835] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[26], }, { /* [836] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [837] */ @@ -7152,17 +7152,17 @@ constexpr ParameterInfo kParameters[] = { { /* [839] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [840] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [841] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[232], }, { /* [842] */ @@ -7202,12 +7202,12 @@ constexpr ParameterInfo kParameters[] = { { /* [849] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [850] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[237], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [851] */ @@ -7227,12 +7227,12 @@ constexpr ParameterInfo kParameters[] = { { /* [854] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [855] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [856] */ @@ -7242,32 +7242,32 @@ constexpr ParameterInfo kParameters[] = { { /* [857] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [858] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[30], }, { /* [859] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[1], }, { /* [860] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[30], }, { /* [861] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [862] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [863] */ @@ -7277,327 +7277,327 @@ constexpr ParameterInfo kParameters[] = { { /* [864] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[132], }, { /* [865] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[132], }, { /* [866] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[16], }, { /* [867] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[128], + /* matcher indices */ &kMatcherIndices[39], }, { /* [868] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[128], + /* matcher indices */ &kMatcherIndices[1], }, { /* [869] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[230], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [870] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[156], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [871] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[233], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [872] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[234], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[132], }, { /* [873] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[126], }, { /* [874] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[126], }, { /* [875] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[154], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [876] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[150], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [877] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[148], + /* matcher indices */ &kMatcherIndices[237], }, { /* [878] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[144], + /* matcher indices */ &kMatcherIndices[154], }, { /* [879] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[142], + /* matcher indices */ &kMatcherIndices[232], }, { /* [880] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[138], + /* matcher indices */ &kMatcherIndices[233], }, { /* [881] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[42], + /* matcher indices */ &kMatcherIndices[234], }, { /* [882] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[233], + /* matcher indices */ &kMatcherIndices[235], }, { /* [883] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], + /* matcher indices */ &kMatcherIndices[152], }, { /* [884] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[154], + /* matcher indices */ &kMatcherIndices[148], }, { /* [885] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[144], + /* matcher indices */ &kMatcherIndices[146], }, { /* [886] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [887] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], - }, - { - /* [888] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [889] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [890] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [891] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [892] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [893] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [894] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [895] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [896] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [897] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [898] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [899] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [900] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [901] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [902] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [903] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[81], - }, - { - /* [904] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[42], - }, - { - /* [905] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[84], - }, - { - /* [906] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [907] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[230], - }, - { - /* [908] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[228], - }, - { - /* [909] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[233], - }, - { - /* [910] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[234], - }, - { - /* [911] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[235], - }, - { - /* [912] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[236], - }, - { - /* [913] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[156], - }, - { - /* [914] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[154], - }, - { - /* [915] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[150], - }, - { - /* [916] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[148], - }, - { - /* [917] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[144], - }, - { - /* [918] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[142], }, + { + /* [887] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[140], + }, + { + /* [888] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], + }, + { + /* [889] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[42], + }, + { + /* [890] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[232], + }, + { + /* [891] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[234], + }, + { + /* [892] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[152], + }, + { + /* [893] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], + }, + { + /* [894] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[142], + }, + { + /* [895] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [896] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [897] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [898] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [899] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [900] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [901] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [902] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [903] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [904] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [905] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [906] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [907] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [908] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [909] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [910] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[81], + }, + { + /* [911] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[42], + }, + { + /* [912] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[84], + }, + { + /* [913] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [914] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[228], + }, + { + /* [915] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[237], + }, + { + /* [916] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[226], + }, + { + /* [917] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[233], + }, + { + /* [918] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[234], + }, { /* [919] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[138], + /* matcher indices */ &kMatcherIndices[235], }, { /* [920] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[154], }, { /* [921] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[152], }, { /* [922] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[34], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[148], }, { /* [923] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[146], }, { /* [924] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[220], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[142], }, { /* [925] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[140], }, { /* [926] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], }, { /* [927] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[218], + /* matcher indices */ &kMatcherIndices[1], }, { /* [928] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[34], }, { /* [929] */ @@ -7607,12 +7607,12 @@ constexpr ParameterInfo kParameters[] = { { /* [930] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[216], + /* matcher indices */ &kMatcherIndices[224], }, { /* [931] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[111], + /* matcher indices */ &kMatcherIndices[35], }, { /* [932] */ @@ -7622,12 +7622,12 @@ constexpr ParameterInfo kParameters[] = { { /* [933] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[216], }, { /* [934] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[4], }, { /* [935] */ @@ -7637,12 +7637,12 @@ constexpr ParameterInfo kParameters[] = { { /* [936] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[214], }, { /* [937] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[114], + /* matcher indices */ &kMatcherIndices[109], }, { /* [938] */ @@ -7652,127 +7652,127 @@ constexpr ParameterInfo kParameters[] = { { /* [939] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* matcher indices */ &kMatcherIndices[30], }, { /* [940] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[124], + /* matcher indices */ &kMatcherIndices[16], }, { /* [941] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[124], + /* matcher indices */ &kMatcherIndices[1], }, { /* [942] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[124], + /* matcher indices */ &kMatcherIndices[1], }, { /* [943] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[124], + /* matcher indices */ &kMatcherIndices[112], }, { /* [944] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[124], + /* matcher indices */ &kMatcherIndices[1], }, { /* [945] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[206], + /* matcher indices */ &kMatcherIndices[35], }, { /* [946] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[106], + /* matcher indices */ &kMatcherIndices[122], }, { /* [947] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[122], }, { /* [948] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[122], }, { /* [949] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* matcher indices */ &kMatcherIndices[122], }, { /* [950] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[35], + /* matcher indices */ &kMatcherIndices[122], }, { /* [951] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[108], + /* matcher indices */ &kMatcherIndices[204], }, { /* [952] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[108], + /* matcher indices */ &kMatcherIndices[106], }, { /* [953] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[108], + /* matcher indices */ &kMatcherIndices[1], }, { /* [954] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[108], + /* matcher indices */ &kMatcherIndices[30], }, { /* [955] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[108], + /* matcher indices */ &kMatcherIndices[35], }, { /* [956] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[204], + /* matcher indices */ &kMatcherIndices[35], }, { /* [957] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[120], + /* matcher indices */ &kMatcherIndices[104], }, { /* [958] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[104], }, { /* [959] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[104], }, { /* [960] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[104], }, { /* [961] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[104], }, { /* [962] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[202], }, { /* [963] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[118], }, { /* [964] */ @@ -7782,7 +7782,7 @@ constexpr ParameterInfo kParameters[] = { { /* [965] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[1], }, { /* [966] */ @@ -7792,62 +7792,62 @@ constexpr ParameterInfo kParameters[] = { { /* [967] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[140], + /* matcher indices */ &kMatcherIndices[1], }, { /* [968] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[140], + /* matcher indices */ &kMatcherIndices[5], }, { /* [969] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[140], + /* matcher indices */ &kMatcherIndices[35], }, { /* [970] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[140], + /* matcher indices */ &kMatcherIndices[35], }, { /* [971] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[202], + /* matcher indices */ &kMatcherIndices[30], }, { /* [972] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[162], + /* matcher indices */ &kMatcherIndices[1], }, { /* [973] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[138], }, { /* [974] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[138], }, { /* [975] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[164], + /* matcher indices */ &kMatcherIndices[138], }, { /* [976] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[166], + /* matcher indices */ &kMatcherIndices[138], }, { /* [977] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[200], }, { /* [978] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[168], + /* matcher indices */ &kMatcherIndices[160], }, { /* [979] */ @@ -7857,77 +7857,77 @@ constexpr ParameterInfo kParameters[] = { { /* [980] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[10], }, { /* [981] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[170], + /* matcher indices */ &kMatcherIndices[162], }, { /* [982] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[174], + /* matcher indices */ &kMatcherIndices[164], }, { /* [983] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[16], }, { /* [984] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[176], + /* matcher indices */ &kMatcherIndices[166], }, { /* [985] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[39], }, { /* [986] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [987] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[178], + /* matcher indices */ &kMatcherIndices[168], }, { /* [988] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[180], + /* matcher indices */ &kMatcherIndices[172], }, { /* [989] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[200], + /* matcher indices */ &kMatcherIndices[16], }, { /* [990] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[182], + /* matcher indices */ &kMatcherIndices[174], }, { /* [991] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [992] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[1], }, { /* [993] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[184], + /* matcher indices */ &kMatcherIndices[176], }, { /* [994] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[186], + /* matcher indices */ &kMatcherIndices[178], }, { /* [995] */ @@ -7937,7 +7937,7 @@ constexpr ParameterInfo kParameters[] = { { /* [996] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[188], + /* matcher indices */ &kMatcherIndices[180], }, { /* [997] */ @@ -7952,12 +7952,12 @@ constexpr ParameterInfo kParameters[] = { { /* [999] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[190], + /* matcher indices */ &kMatcherIndices[182], }, { /* [1000] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[192], + /* matcher indices */ &kMatcherIndices[184], }, { /* [1001] */ @@ -7967,22 +7967,52 @@ constexpr ParameterInfo kParameters[] = { { /* [1002] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[194], + /* matcher indices */ &kMatcherIndices[186], }, { /* [1003] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[60], + /* matcher indices */ &kMatcherIndices[1], }, { /* [1004] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[30], }, { /* [1005] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[140], + /* matcher indices */ &kMatcherIndices[188], + }, + { + /* [1006] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[190], + }, + { + /* [1007] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[194], + }, + { + /* [1008] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[192], + }, + { + /* [1009] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[60], + }, + { + /* [1010] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [1011] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[138], }, }; @@ -7990,12 +8020,12 @@ constexpr TemplateTypeInfo kTemplateTypes[] = { { /* [0] */ /* name */ "T", - /* matcher index */ 5, + /* matcher index */ 8, }, { /* [1] */ /* name */ "U", - /* matcher index */ 54, + /* matcher index */ 53, }, { /* [2] */ @@ -8010,12 +8040,12 @@ constexpr TemplateTypeInfo kTemplateTypes[] = { { /* [4] */ /* name */ "T", - /* matcher index */ 8, + /* matcher index */ 5, }, { /* [5] */ /* name */ "U", - /* matcher index */ 53, + /* matcher index */ 54, }, { /* [6] */ @@ -8040,7 +8070,7 @@ constexpr TemplateTypeInfo kTemplateTypes[] = { { /* [10] */ /* name */ "T", - /* matcher index */ 62, + /* matcher index */ 68, }, { /* [11] */ @@ -8060,57 +8090,57 @@ constexpr TemplateTypeInfo kTemplateTypes[] = { { /* [14] */ /* name */ "T", - /* matcher index */ 68, + /* matcher index */ 63, }, { /* [15] */ /* name */ "T", - /* matcher index */ 63, + /* matcher index */ 51, }, { /* [16] */ /* name */ "T", - /* matcher index */ 51, + /* matcher index */ 64, }, { /* [17] */ /* name */ "T", - /* matcher index */ 64, + /* matcher index */ 50, }, { /* [18] */ /* name */ "T", - /* matcher index */ 50, + /* matcher index */ kNoMatcher, }, { /* [19] */ /* name */ "T", - /* matcher index */ kNoMatcher, + /* matcher index */ 56, }, { /* [20] */ /* name */ "T", - /* matcher index */ 56, + /* matcher index */ 53, }, { /* [21] */ /* name */ "T", - /* matcher index */ 53, + /* matcher index */ 52, }, { /* [22] */ /* name */ "T", - /* matcher index */ 52, + /* matcher index */ 55, }, { /* [23] */ /* name */ "T", - /* matcher index */ 55, + /* matcher index */ 54, }, { /* [24] */ /* name */ "T", - /* matcher index */ 54, + /* matcher index */ 62, }, { /* [25] */ @@ -8178,9 +8208,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[919], + /* parameters */ &kParameters[926], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -8190,9 +8220,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[621], + /* parameters */ &kParameters[623], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -8202,10 +8232,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[918], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[925], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8214,10 +8244,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[625], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[627], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8226,10 +8256,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[917], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[924], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8238,10 +8268,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[629], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[631], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8250,10 +8280,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[916], - /* return matcher indices */ &kMatcherIndices[112], + /* parameters */ &kParameters[923], + /* return matcher indices */ &kMatcherIndices[110], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8262,10 +8292,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[633], - /* return matcher indices */ &kMatcherIndices[112], + /* parameters */ &kParameters[635], + /* return matcher indices */ &kMatcherIndices[110], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8274,10 +8304,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[915], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[922], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8286,10 +8316,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[637], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[639], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8298,10 +8328,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[914], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[921], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8310,10 +8340,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[641], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[643], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8322,10 +8352,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[913], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[920], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8336,8 +8366,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[912], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[919], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8348,8 +8378,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[647], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[649], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8360,8 +8390,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[911], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[918], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8372,8 +8402,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[651], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[653], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8384,8 +8414,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[910], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[917], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8396,8 +8426,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[777], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[657], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8408,8 +8438,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[909], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[841], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8420,8 +8450,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[659], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[661], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8432,8 +8462,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[907], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[915], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8444,7 +8474,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[3], - /* parameters */ &kParameters[906], + /* parameters */ &kParameters[913], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -8456,8 +8486,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[3], - /* parameters */ &kParameters[905], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[912], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8468,8 +8498,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[3], - /* parameters */ &kParameters[904], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[911], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8480,8 +8510,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[3], - /* parameters */ &kParameters[903], - /* return matcher indices */ &kMatcherIndices[112], + /* parameters */ &kParameters[910], + /* return matcher indices */ &kMatcherIndices[110], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8492,8 +8522,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[850], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[803], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8504,8 +8534,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[507], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[516], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -8516,8 +8546,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[504], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[513], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -8528,8 +8558,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[335], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[351], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -8540,8 +8570,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[331], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[339], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -8552,8 +8582,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[230], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[225], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -8564,8 +8594,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[492], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[501], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -8576,8 +8606,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[323], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[335], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -8588,8 +8618,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[486], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[495], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -8600,8 +8630,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[319], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[323], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -8612,7 +8642,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[471], + /* parameters */ &kParameters[489], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -8624,7 +8654,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[311], + /* parameters */ &kParameters[319], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -8636,7 +8666,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[443], + /* parameters */ &kParameters[315], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -8648,7 +8678,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[245], + /* parameters */ &kParameters[165], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -8660,7 +8690,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[459], + /* parameters */ &kParameters[468], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -8672,7 +8702,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[339], + /* parameters */ &kParameters[311], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -8682,10 +8712,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[16], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -8694,10 +8724,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[16], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[957], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[963], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -8706,10 +8736,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[958], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[964], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecSplat, }, @@ -8718,10 +8748,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[399], - /* return matcher indices */ &kMatcherIndices[120], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorS, }, @@ -8730,10 +8760,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[564], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[570], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorM, }, @@ -8742,10 +8772,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[585], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[579], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorM, }, @@ -8754,10 +8784,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[570], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[582], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorM, }, @@ -8766,10 +8796,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[605], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[611], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorM, }, @@ -8778,10 +8808,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[603], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[609], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorM, }, @@ -8790,10 +8820,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[601], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[607], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorM, }, @@ -8804,8 +8834,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1005], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[1011], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -8814,10 +8844,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[967], - /* return matcher indices */ &kMatcherIndices[146], + /* parameters */ &kParameters[973], + /* return matcher indices */ &kMatcherIndices[144], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -8826,10 +8856,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[0], + /* template types */ &kTemplateTypes[4], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[968], - /* return matcher indices */ &kMatcherIndices[152], + /* parameters */ &kParameters[974], + /* return matcher indices */ &kMatcherIndices[150], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -8840,8 +8870,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[6], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[969], - /* return matcher indices */ &kMatcherIndices[158], + /* parameters */ &kParameters[975], + /* return matcher indices */ &kMatcherIndices[156], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -8852,8 +8882,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[970], - /* return matcher indices */ &kMatcherIndices[160], + /* parameters */ &kParameters[976], + /* return matcher indices */ &kMatcherIndices[158], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -8864,8 +8894,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[315], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[327], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8876,8 +8906,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[250], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[240], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8888,8 +8918,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[260], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[250], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8901,7 +8931,7 @@ constexpr OverloadInfo kOverloads[] = { /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[132], - /* return matcher indices */ &kMatcherIndices[128], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8912,8 +8942,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[299], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[307], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8924,8 +8954,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[195], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[270], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8936,8 +8966,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[295], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[299], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8948,8 +8978,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[225], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[150], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -8960,7 +8990,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[303], + /* parameters */ &kParameters[295], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -8972,7 +9002,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[275], + /* parameters */ &kParameters[285], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -8984,7 +9014,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[270], + /* parameters */ &kParameters[280], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -8996,7 +9026,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[120], + /* parameters */ &kParameters[138], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9008,7 +9038,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[307], + /* parameters */ &kParameters[303], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9020,7 +9050,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[285], + /* parameters */ &kParameters[265], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9032,9 +9062,9 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[468], - /* return matcher indices */ &kMatcherIndices[128], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* parameters */ &kParameters[462], + /* return matcher indices */ &kMatcherIndices[126], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kIsDeprecated), /* const eval */ nullptr, }, { @@ -9044,7 +9074,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[474], + /* parameters */ &kParameters[486], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9056,7 +9086,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[489], + /* parameters */ &kParameters[492], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9068,7 +9098,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[327], + /* parameters */ &kParameters[331], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9080,7 +9110,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[495], + /* parameters */ &kParameters[498], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9092,7 +9122,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[498], + /* parameters */ &kParameters[504], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9104,7 +9134,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[501], + /* parameters */ &kParameters[507], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9116,7 +9146,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[347], + /* parameters */ &kParameters[343], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9128,7 +9158,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[510], + /* parameters */ &kParameters[471], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9140,7 +9170,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[465], + /* parameters */ &kParameters[510], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9152,7 +9182,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[513], + /* parameters */ &kParameters[519], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9176,7 +9206,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[516], + /* parameters */ &kParameters[522], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9186,10 +9216,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[415], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[431], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9198,10 +9228,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[240], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[255], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9210,10 +9240,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[205], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[215], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9222,10 +9252,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[108], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[96], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9234,10 +9264,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[391], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[407], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9246,10 +9276,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[160], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[170], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9260,8 +9290,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[555], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[564], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9272,8 +9302,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[383], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[391], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9284,8 +9314,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[379], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[375], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9296,8 +9326,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[165], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[160], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9308,8 +9338,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[534], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[543], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9320,8 +9350,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[375], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[443], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9330,9 +9360,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[16], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], + /* parameters */ &kParameters[1012], /* return matcher indices */ &kMatcherIndices[106], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, @@ -9342,9 +9372,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[16], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[946], + /* parameters */ &kParameters[952], /* return matcher indices */ &kMatcherIndices[106], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, @@ -9354,9 +9384,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[947], + /* parameters */ &kParameters[953], /* return matcher indices */ &kMatcherIndices[106], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecSplat, @@ -9366,9 +9396,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[588], + /* parameters */ &kParameters[594], /* return matcher indices */ &kMatcherIndices[106], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorS, @@ -9378,9 +9408,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[609], + /* parameters */ &kParameters[615], /* return matcher indices */ &kMatcherIndices[106], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorM, @@ -9390,9 +9420,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[607], + /* parameters */ &kParameters[613], /* return matcher indices */ &kMatcherIndices[106], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorM, @@ -9404,8 +9434,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[951], - /* return matcher indices */ &kMatcherIndices[104], + /* parameters */ &kParameters[957], + /* return matcher indices */ &kMatcherIndices[102], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -9414,10 +9444,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[952], - /* return matcher indices */ &kMatcherIndices[110], + /* parameters */ &kParameters[958], + /* return matcher indices */ &kMatcherIndices[108], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -9426,10 +9456,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[0], + /* template types */ &kTemplateTypes[4], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[953], - /* return matcher indices */ &kMatcherIndices[112], + /* parameters */ &kParameters[959], + /* return matcher indices */ &kMatcherIndices[110], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -9440,8 +9470,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[6], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[954], - /* return matcher indices */ &kMatcherIndices[116], + /* parameters */ &kParameters[960], + /* return matcher indices */ &kMatcherIndices[114], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -9452,8 +9482,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[955], - /* return matcher indices */ &kMatcherIndices[118], + /* parameters */ &kParameters[961], + /* return matcher indices */ &kMatcherIndices[116], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -9462,9 +9492,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[880], + /* parameters */ &kParameters[888], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9474,9 +9504,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[879], + /* parameters */ &kParameters[887], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9486,9 +9516,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[878], + /* parameters */ &kParameters[886], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9498,9 +9528,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[877], + /* parameters */ &kParameters[885], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9510,9 +9540,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[876], + /* parameters */ &kParameters[884], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9522,9 +9552,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[875], + /* parameters */ &kParameters[883], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9536,7 +9566,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[874], + /* parameters */ &kParameters[882], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9548,7 +9578,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[873], + /* parameters */ &kParameters[881], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9560,7 +9590,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[872], + /* parameters */ &kParameters[880], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9572,7 +9602,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[871], + /* parameters */ &kParameters[879], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -9582,10 +9612,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[16], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[114], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[112], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -9594,10 +9624,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[16], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[937], - /* return matcher indices */ &kMatcherIndices[114], + /* parameters */ &kParameters[943], + /* return matcher indices */ &kMatcherIndices[112], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -9606,10 +9636,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[938], - /* return matcher indices */ &kMatcherIndices[114], + /* parameters */ &kParameters[944], + /* return matcher indices */ &kMatcherIndices[112], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecSplat, }, @@ -9618,10 +9648,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[611], - /* return matcher indices */ &kMatcherIndices[114], + /* parameters */ &kParameters[617], + /* return matcher indices */ &kMatcherIndices[112], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::VecCtorS, }, @@ -9632,8 +9662,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[940], - /* return matcher indices */ &kMatcherIndices[134], + /* parameters */ &kParameters[946], + /* return matcher indices */ &kMatcherIndices[132], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -9642,10 +9672,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[941], - /* return matcher indices */ &kMatcherIndices[132], + /* parameters */ &kParameters[947], + /* return matcher indices */ &kMatcherIndices[130], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -9654,10 +9684,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[0], + /* template types */ &kTemplateTypes[4], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[942], - /* return matcher indices */ &kMatcherIndices[130], + /* parameters */ &kParameters[948], + /* return matcher indices */ &kMatcherIndices[128], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -9668,8 +9698,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[6], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[943], - /* return matcher indices */ &kMatcherIndices[126], + /* parameters */ &kParameters[949], + /* return matcher indices */ &kMatcherIndices[124], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -9680,8 +9710,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[944], - /* return matcher indices */ &kMatcherIndices[122], + /* parameters */ &kParameters[950], + /* return matcher indices */ &kMatcherIndices[120], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -9690,10 +9720,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[519], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[528], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9702,10 +9732,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[522], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[531], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9714,10 +9744,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[363], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[367], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9726,10 +9756,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[528], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[534], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9738,10 +9768,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[540], - /* return matcher indices */ &kMatcherIndices[120], + /* parameters */ &kParameters[555], + /* return matcher indices */ &kMatcherIndices[118], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9752,35 +9782,35 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[543], - /* return matcher indices */ &kMatcherIndices[4], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, - { - /* [132] */ - /* num parameters */ 4, - /* num template types */ 0, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[26], - /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[387], - /* return matcher indices */ &kMatcherIndices[4], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, - { - /* [133] */ - /* num parameters */ 3, - /* num template types */ 0, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[26], - /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[558], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, + { + /* [132] */ + /* num parameters */ 4, + /* num template types */ 0, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[26], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[383], + /* return matcher indices */ &kMatcherIndices[4], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [133] */ + /* num parameters */ 3, + /* num template types */ 0, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[26], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[561], + /* return matcher indices */ &kMatcherIndices[4], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, { /* [134] */ /* num parameters */ 2, @@ -9788,8 +9818,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[775], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[785], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -9800,7 +9830,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[727], + /* parameters */ &kParameters[733], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMultiply, @@ -9812,7 +9842,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[725], + /* parameters */ &kParameters[731], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMultiply, @@ -9824,7 +9854,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[723], + /* parameters */ &kParameters[729], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMultiply, @@ -9836,7 +9866,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[721], + /* parameters */ &kParameters[727], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMultiply, @@ -9848,7 +9878,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[719], + /* parameters */ &kParameters[725], /* return matcher indices */ &kMatcherIndices[10], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMultiply, @@ -9860,7 +9890,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[717], + /* parameters */ &kParameters[723], /* return matcher indices */ &kMatcherIndices[10], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMultiply, @@ -9872,7 +9902,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[1], - /* parameters */ &kParameters[715], + /* parameters */ &kParameters[721], /* return matcher indices */ &kMatcherIndices[69], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMultiplyMatVec, @@ -9884,7 +9914,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[1], - /* parameters */ &kParameters[713], + /* parameters */ &kParameters[719], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMultiplyVecMat, @@ -9896,8 +9926,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 3, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[0], - /* parameters */ &kParameters[711], - /* return matcher indices */ &kMatcherIndices[26], + /* parameters */ &kParameters[717], + /* return matcher indices */ &kMatcherIndices[22], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMultiplyMatMat, }, @@ -9908,8 +9938,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[343], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[435], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -9920,8 +9950,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[215], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[245], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -9932,8 +9962,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[200], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[220], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -9944,8 +9974,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[144], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[90], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -9956,8 +9986,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[435], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[347], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -9968,8 +9998,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[290], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[155], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -9980,8 +10010,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[431], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[379], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -9992,8 +10022,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[280], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[260], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, }, @@ -10004,8 +10034,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[180], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[200], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10016,8 +10046,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[138], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[72], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10028,8 +10058,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[126], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[108], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10041,7 +10071,7 @@ constexpr OverloadInfo kOverloads[] = { /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[65], - /* return matcher indices */ &kMatcherIndices[128], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10052,8 +10082,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[220], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[290], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10064,8 +10094,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[78], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[102], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10076,8 +10106,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[235], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[230], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10088,8 +10118,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[90], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[78], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10100,8 +10130,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[182], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[180], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -10112,8 +10142,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[990], - /* return matcher indices */ &kMatcherIndices[182], + /* parameters */ &kParameters[996], + /* return matcher indices */ &kMatcherIndices[180], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -10124,8 +10154,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[114], - /* return matcher indices */ &kMatcherIndices[182], + /* parameters */ &kParameters[120], + /* return matcher indices */ &kMatcherIndices[180], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorS, }, @@ -10136,8 +10166,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[579], - /* return matcher indices */ &kMatcherIndices[182], + /* parameters */ &kParameters[585], + /* return matcher indices */ &kMatcherIndices[180], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorV, }, @@ -10146,10 +10176,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[993], - /* return matcher indices */ &kMatcherIndices[186], + /* parameters */ &kParameters[999], + /* return matcher indices */ &kMatcherIndices[184], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10160,8 +10190,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[994], - /* return matcher indices */ &kMatcherIndices[184], + /* parameters */ &kParameters[1000], + /* return matcher indices */ &kMatcherIndices[182], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10172,7 +10202,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[419], + /* parameters */ &kParameters[355], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -10184,7 +10214,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[265], + /* parameters */ &kParameters[275], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -10196,7 +10226,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[255], + /* parameters */ &kParameters[235], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -10220,7 +10250,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[403], + /* parameters */ &kParameters[411], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -10232,7 +10262,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[170], + /* parameters */ &kParameters[210], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -10244,7 +10274,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[355], + /* parameters */ &kParameters[403], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -10256,7 +10286,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[150], + /* parameters */ &kParameters[195], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -10268,7 +10298,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[155], + /* parameters */ &kParameters[190], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -10280,7 +10310,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[72], + /* parameters */ &kParameters[144], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -10292,7 +10322,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[371], + /* parameters */ &kParameters[387], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -10304,7 +10334,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[175], + /* parameters */ &kParameters[180], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -10316,8 +10346,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[176], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[174], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -10328,8 +10358,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[984], - /* return matcher indices */ &kMatcherIndices[176], + /* parameters */ &kParameters[990], + /* return matcher indices */ &kMatcherIndices[174], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -10340,8 +10370,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[57], - /* return matcher indices */ &kMatcherIndices[176], + /* parameters */ &kParameters[49], + /* return matcher indices */ &kMatcherIndices[174], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorS, }, @@ -10352,8 +10382,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[593], - /* return matcher indices */ &kMatcherIndices[176], + /* parameters */ &kParameters[599], + /* return matcher indices */ &kMatcherIndices[174], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorV, }, @@ -10362,10 +10392,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[987], - /* return matcher indices */ &kMatcherIndices[180], + /* parameters */ &kParameters[993], + /* return matcher indices */ &kMatcherIndices[178], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10376,8 +10406,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[988], - /* return matcher indices */ &kMatcherIndices[178], + /* parameters */ &kParameters[994], + /* return matcher indices */ &kMatcherIndices[176], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10388,8 +10418,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[220], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[224], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -10400,8 +10430,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[924], - /* return matcher indices */ &kMatcherIndices[220], + /* parameters */ &kParameters[930], + /* return matcher indices */ &kMatcherIndices[224], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -10413,7 +10443,7 @@ constexpr OverloadInfo kOverloads[] = { /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[0], - /* return matcher indices */ &kMatcherIndices[220], + /* return matcher indices */ &kMatcherIndices[224], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorS, }, @@ -10425,7 +10455,7 @@ constexpr OverloadInfo kOverloads[] = { /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[439], - /* return matcher indices */ &kMatcherIndices[220], + /* return matcher indices */ &kMatcherIndices[224], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorV, }, @@ -10434,9 +10464,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[797], + /* parameters */ &kParameters[916], /* return matcher indices */ &kMatcherIndices[228], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, @@ -10448,7 +10478,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[908], + /* parameters */ &kParameters[914], /* return matcher indices */ &kMatcherIndices[226], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, @@ -10460,8 +10490,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[367], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[371], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10472,8 +10502,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[185], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[175], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10484,8 +10514,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[190], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[185], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10496,8 +10526,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[102], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[126], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10508,8 +10538,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[351], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[363], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10520,8 +10550,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[210], - /* return matcher indices */ &kMatcherIndices[128], + /* parameters */ &kParameters[205], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -10532,8 +10562,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[206], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[204], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -10544,8 +10574,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[945], - /* return matcher indices */ &kMatcherIndices[206], + /* parameters */ &kParameters[951], + /* return matcher indices */ &kMatcherIndices[204], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -10556,8 +10586,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[16], - /* return matcher indices */ &kMatcherIndices[206], + /* parameters */ &kParameters[28], + /* return matcher indices */ &kMatcherIndices[204], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorS, }, @@ -10569,7 +10599,7 @@ constexpr OverloadInfo kOverloads[] = { /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[395], - /* return matcher indices */ &kMatcherIndices[206], + /* return matcher indices */ &kMatcherIndices[204], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorV, }, @@ -10578,10 +10608,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[930], - /* return matcher indices */ &kMatcherIndices[218], + /* parameters */ &kParameters[936], + /* return matcher indices */ &kMatcherIndices[216], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10592,8 +10622,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[927], - /* return matcher indices */ &kMatcherIndices[216], + /* parameters */ &kParameters[933], + /* return matcher indices */ &kMatcherIndices[214], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10604,8 +10634,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[200], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[198], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -10616,8 +10646,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[989], - /* return matcher indices */ &kMatcherIndices[200], + /* parameters */ &kParameters[995], + /* return matcher indices */ &kMatcherIndices[198], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -10628,8 +10658,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[49], - /* return matcher indices */ &kMatcherIndices[200], + /* parameters */ &kParameters[57], + /* return matcher indices */ &kMatcherIndices[198], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorS, }, @@ -10640,8 +10670,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[411], - /* return matcher indices */ &kMatcherIndices[200], + /* parameters */ &kParameters[419], + /* return matcher indices */ &kMatcherIndices[198], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorV, }, @@ -10650,10 +10680,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[971], - /* return matcher indices */ &kMatcherIndices[204], + /* parameters */ &kParameters[977], + /* return matcher indices */ &kMatcherIndices[202], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10664,8 +10694,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[956], - /* return matcher indices */ &kMatcherIndices[202], + /* parameters */ &kParameters[962], + /* return matcher indices */ &kMatcherIndices[200], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10676,8 +10706,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[168], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[166], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -10688,8 +10718,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[978], - /* return matcher indices */ &kMatcherIndices[168], + /* parameters */ &kParameters[984], + /* return matcher indices */ &kMatcherIndices[166], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -10700,8 +10730,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[96], - /* return matcher indices */ &kMatcherIndices[168], + /* parameters */ &kParameters[114], + /* return matcher indices */ &kMatcherIndices[166], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorS, }, @@ -10712,8 +10742,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[595], - /* return matcher indices */ &kMatcherIndices[168], + /* parameters */ &kParameters[601], + /* return matcher indices */ &kMatcherIndices[166], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorV, }, @@ -10722,10 +10752,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[981], - /* return matcher indices */ &kMatcherIndices[174], + /* parameters */ &kParameters[987], + /* return matcher indices */ &kMatcherIndices[172], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10736,8 +10766,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[982], - /* return matcher indices */ &kMatcherIndices[170], + /* parameters */ &kParameters[988], + /* return matcher indices */ &kMatcherIndices[168], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10748,8 +10778,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[194], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[192], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -10760,8 +10790,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1002], - /* return matcher indices */ &kMatcherIndices[194], + /* parameters */ &kParameters[1008], + /* return matcher indices */ &kMatcherIndices[192], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -10772,8 +10802,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[28], - /* return matcher indices */ &kMatcherIndices[194], + /* parameters */ &kParameters[16], + /* return matcher indices */ &kMatcherIndices[192], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorS, }, @@ -10784,8 +10814,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[462], - /* return matcher indices */ &kMatcherIndices[194], + /* parameters */ &kParameters[459], + /* return matcher indices */ &kMatcherIndices[192], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorV, }, @@ -10794,10 +10824,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1001], - /* return matcher indices */ &kMatcherIndices[198], + /* parameters */ &kParameters[1007], + /* return matcher indices */ &kMatcherIndices[196], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10808,8 +10838,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[995], - /* return matcher indices */ &kMatcherIndices[196], + /* parameters */ &kParameters[1001], + /* return matcher indices */ &kMatcherIndices[194], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10820,8 +10850,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[188], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[186], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -10832,8 +10862,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[996], - /* return matcher indices */ &kMatcherIndices[188], + /* parameters */ &kParameters[1002], + /* return matcher indices */ &kMatcherIndices[186], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -10845,7 +10875,7 @@ constexpr OverloadInfo kOverloads[] = { /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[40], - /* return matcher indices */ &kMatcherIndices[188], + /* return matcher indices */ &kMatcherIndices[186], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorS, }, @@ -10856,8 +10886,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[582], - /* return matcher indices */ &kMatcherIndices[188], + /* parameters */ &kParameters[588], + /* return matcher indices */ &kMatcherIndices[186], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorV, }, @@ -10866,10 +10896,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[999], - /* return matcher indices */ &kMatcherIndices[192], + /* parameters */ &kParameters[1005], + /* return matcher indices */ &kMatcherIndices[190], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10880,8 +10910,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1000], - /* return matcher indices */ &kMatcherIndices[190], + /* parameters */ &kParameters[1006], + /* return matcher indices */ &kMatcherIndices[188], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10892,8 +10922,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[162], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[160], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -10904,8 +10934,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[972], - /* return matcher indices */ &kMatcherIndices[162], + /* parameters */ &kParameters[978], + /* return matcher indices */ &kMatcherIndices[160], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -10916,8 +10946,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[407], - /* return matcher indices */ &kMatcherIndices[162], + /* parameters */ &kParameters[415], + /* return matcher indices */ &kMatcherIndices[160], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorS, }, @@ -10928,8 +10958,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[597], - /* return matcher indices */ &kMatcherIndices[162], + /* parameters */ &kParameters[603], + /* return matcher indices */ &kMatcherIndices[160], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::MatCtorV, }, @@ -10938,10 +10968,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[0], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[975], - /* return matcher indices */ &kMatcherIndices[166], + /* parameters */ &kParameters[981], + /* return matcher indices */ &kMatcherIndices[164], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10952,8 +10982,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[976], - /* return matcher indices */ &kMatcherIndices[164], + /* parameters */ &kParameters[982], + /* return matcher indices */ &kMatcherIndices[162], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -10962,9 +10992,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[885], + /* parameters */ &kParameters[894], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -10974,9 +11004,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[884], + /* parameters */ &kParameters[892], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -10988,7 +11018,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[883], + /* parameters */ &kParameters[891], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11000,7 +11030,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[882], + /* parameters */ &kParameters[890], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11012,7 +11042,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[3], - /* parameters */ &kParameters[881], + /* parameters */ &kParameters[889], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11024,7 +11054,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[747], + /* parameters */ &kParameters[755], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpPlus, @@ -11036,7 +11066,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[745], + /* parameters */ &kParameters[753], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpPlus, @@ -11048,7 +11078,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[743], + /* parameters */ &kParameters[751], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpPlus, @@ -11060,7 +11090,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[741], + /* parameters */ &kParameters[749], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpPlus, @@ -11072,7 +11102,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[739], + /* parameters */ &kParameters[745], /* return matcher indices */ &kMatcherIndices[10], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpPlus, @@ -11084,7 +11114,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[737], + /* parameters */ &kParameters[743], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMinus, @@ -11096,7 +11126,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[735], + /* parameters */ &kParameters[741], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMinus, @@ -11108,7 +11138,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[733], + /* parameters */ &kParameters[739], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMinus, @@ -11120,7 +11150,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[731], + /* parameters */ &kParameters[737], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMinus, @@ -11132,7 +11162,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 2, /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[729], + /* parameters */ &kParameters[735], /* return matcher indices */ &kMatcherIndices[10], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpMinus, @@ -11144,7 +11174,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[709], + /* parameters */ &kParameters[715], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpDivide, @@ -11156,7 +11186,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[703], + /* parameters */ &kParameters[713], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpDivide, @@ -11168,7 +11198,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[591], + /* parameters */ &kParameters[597], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpDivide, @@ -11180,7 +11210,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[701], + /* parameters */ &kParameters[711], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpDivide, @@ -11190,9 +11220,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[697], + /* parameters */ &kParameters[709], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11202,9 +11232,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[695], + /* parameters */ &kParameters[705], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11214,9 +11244,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[693], + /* parameters */ &kParameters[703], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11226,9 +11256,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[691], + /* parameters */ &kParameters[701], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11240,8 +11270,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[685], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[695], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpAnd, }, @@ -11252,7 +11282,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[683], + /* parameters */ &kParameters[693], /* return matcher indices */ &kMatcherIndices[39], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpAnd, @@ -11262,9 +11292,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[10], + /* template types */ &kTemplateTypes[24], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[681], + /* parameters */ &kParameters[691], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpAnd, @@ -11274,9 +11304,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[10], + /* template types */ &kTemplateTypes[24], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[679], + /* parameters */ &kParameters[689], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpAnd, @@ -11288,8 +11318,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[677], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[687], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpOr, }, @@ -11300,7 +11330,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[675], + /* parameters */ &kParameters[685], /* return matcher indices */ &kMatcherIndices[39], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpOr, @@ -11310,9 +11340,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[10], + /* template types */ &kTemplateTypes[24], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[673], + /* parameters */ &kParameters[683], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpOr, @@ -11322,9 +11352,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[10], + /* template types */ &kTemplateTypes[24], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[671], + /* parameters */ &kParameters[681], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpOr, @@ -11336,8 +11366,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -11348,8 +11378,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[934], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[940], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -11358,10 +11388,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[20], + /* template types */ &kTemplateTypes[19], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[935], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[941], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -11372,8 +11402,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], - /* return matcher indices */ &kMatcherIndices[111], + /* parameters */ &kParameters[1012], + /* return matcher indices */ &kMatcherIndices[109], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, }, @@ -11384,8 +11414,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[931], - /* return matcher indices */ &kMatcherIndices[111], + /* parameters */ &kParameters[937], + /* return matcher indices */ &kMatcherIndices[109], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, }, @@ -11394,10 +11424,10 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[21], + /* template types */ &kTemplateTypes[20], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[932], - /* return matcher indices */ &kMatcherIndices[111], + /* parameters */ &kParameters[938], + /* return matcher indices */ &kMatcherIndices[109], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, }, @@ -11408,7 +11438,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], + /* parameters */ &kParameters[1012], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, @@ -11420,7 +11450,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[928], + /* parameters */ &kParameters[934], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, @@ -11430,9 +11460,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[21], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[929], + /* parameters */ &kParameters[935], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, @@ -11442,7 +11472,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[16], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[546], /* return matcher indices */ &kMatcherIndices[1], @@ -11454,7 +11484,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[16], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[549], /* return matcher indices */ &kMatcherIndices[30], @@ -11466,7 +11496,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[16], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[552], /* return matcher indices */ &kMatcherIndices[30], @@ -11480,7 +11510,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], + /* parameters */ &kParameters[1012], /* return matcher indices */ &kMatcherIndices[35], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, @@ -11492,7 +11522,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[925], + /* parameters */ &kParameters[931], /* return matcher indices */ &kMatcherIndices[35], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, @@ -11502,9 +11532,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[23], + /* template types */ &kTemplateTypes[22], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[926], + /* parameters */ &kParameters[932], /* return matcher indices */ &kMatcherIndices[35], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, @@ -11516,7 +11546,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], + /* parameters */ &kParameters[1012], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Zero, @@ -11528,7 +11558,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[922], + /* parameters */ &kParameters[928], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Identity, @@ -11538,9 +11568,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[24], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[923], + /* parameters */ &kParameters[929], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::Conv, @@ -11586,9 +11616,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[627], + /* parameters */ &kParameters[633], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11598,9 +11628,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[623], + /* parameters */ &kParameters[629], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11612,8 +11642,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[800], - /* return matcher indices */ &kMatcherIndices[172], + /* parameters */ &kParameters[806], + /* return matcher indices */ &kMatcherIndices[170], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -11624,7 +11654,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[799], + /* parameters */ &kParameters[805], /* return matcher indices */ &kMatcherIndices[78], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11636,7 +11666,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[798], + /* parameters */ &kParameters[804], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -11648,7 +11678,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[811], + /* parameters */ &kParameters[817], /* return matcher indices */ &kMatcherIndices[60], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -11660,7 +11690,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[824], + /* parameters */ &kParameters[830], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -11672,7 +11702,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[825], + /* parameters */ &kParameters[831], /* return matcher indices */ &kMatcherIndices[60], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -11684,7 +11714,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[826], + /* parameters */ &kParameters[832], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -11696,7 +11726,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[827], + /* parameters */ &kParameters[833], /* return matcher indices */ &kMatcherIndices[60], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -11706,7 +11736,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[423], /* return matcher indices */ &kMatcherIndices[1], @@ -11718,7 +11748,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[427], /* return matcher indices */ &kMatcherIndices[30], @@ -11732,7 +11762,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[828], + /* parameters */ &kParameters[834], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11744,7 +11774,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[832], + /* parameters */ &kParameters[838], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11756,7 +11786,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[781], + /* parameters */ &kParameters[789], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11768,7 +11798,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[779], + /* parameters */ &kParameters[787], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11780,7 +11810,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[836], + /* parameters */ &kParameters[854], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11792,7 +11822,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[848], + /* parameters */ &kParameters[856], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11804,7 +11834,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[851], + /* parameters */ &kParameters[857], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11816,7 +11846,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[852], + /* parameters */ &kParameters[858], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11828,7 +11858,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[853], + /* parameters */ &kParameters[859], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11840,7 +11870,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[854], + /* parameters */ &kParameters[860], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11850,9 +11880,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[765], + /* parameters */ &kParameters[773], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11862,9 +11892,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[763], + /* parameters */ &kParameters[771], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11874,9 +11904,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[761], + /* parameters */ &kParameters[769], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11886,9 +11916,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[759], + /* parameters */ &kParameters[767], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11900,7 +11930,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[802], + /* parameters */ &kParameters[808], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11912,7 +11942,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[801], + /* parameters */ &kParameters[807], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11924,8 +11954,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[855], - /* return matcher indices */ &kMatcherIndices[136], + /* parameters */ &kParameters[861], + /* return matcher indices */ &kMatcherIndices[134], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -11936,8 +11966,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[856], - /* return matcher indices */ &kMatcherIndices[99], + /* parameters */ &kParameters[862], + /* return matcher indices */ &kMatcherIndices[96], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -11948,7 +11978,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[567], + /* parameters */ &kParameters[573], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11972,7 +12002,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[804], + /* parameters */ &kParameters[810], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11984,7 +12014,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[803], + /* parameters */ &kParameters[809], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -11994,9 +12024,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[808], + /* parameters */ &kParameters[814], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12006,9 +12036,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[807], + /* parameters */ &kParameters[813], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12018,7 +12048,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[456], /* return matcher indices */ &kMatcherIndices[1], @@ -12030,7 +12060,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[453], /* return matcher indices */ &kMatcherIndices[30], @@ -12044,7 +12074,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[810], + /* parameters */ &kParameters[816], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12056,7 +12086,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[809], + /* parameters */ &kParameters[815], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12068,7 +12098,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[812], + /* parameters */ &kParameters[818], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12080,7 +12110,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[849], + /* parameters */ &kParameters[855], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12092,7 +12122,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[707], + /* parameters */ &kParameters[673], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12104,7 +12134,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[705], + /* parameters */ &kParameters[747], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12116,7 +12146,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[886], + /* parameters */ &kParameters[876], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12128,7 +12158,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[888], + /* parameters */ &kParameters[895], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12140,7 +12170,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[813], + /* parameters */ &kParameters[819], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12152,7 +12182,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[1003], + /* parameters */ &kParameters[1009], /* return matcher indices */ &kMatcherIndices[60], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12164,7 +12194,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[815], + /* parameters */ &kParameters[821], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12176,7 +12206,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[814], + /* parameters */ &kParameters[820], /* return matcher indices */ &kMatcherIndices[60], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12186,9 +12216,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[889], + /* parameters */ &kParameters[896], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12198,9 +12228,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[890], + /* parameters */ &kParameters[897], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12212,7 +12242,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[891], + /* parameters */ &kParameters[898], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12224,7 +12254,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[892], + /* parameters */ &kParameters[899], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12236,7 +12266,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[893], + /* parameters */ &kParameters[900], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12248,7 +12278,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[894], + /* parameters */ &kParameters[901], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12260,7 +12290,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[817], + /* parameters */ &kParameters[823], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12272,7 +12302,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[816], + /* parameters */ &kParameters[822], /* return matcher indices */ &kMatcherIndices[60], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12284,7 +12314,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[895], + /* parameters */ &kParameters[902], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12296,7 +12326,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[896], + /* parameters */ &kParameters[903], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12308,7 +12338,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[897], + /* parameters */ &kParameters[904], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12320,7 +12350,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[898], + /* parameters */ &kParameters[905], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12332,7 +12362,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[899], + /* parameters */ &kParameters[906], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12344,7 +12374,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[900], + /* parameters */ &kParameters[907], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12356,7 +12386,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[573], + /* parameters */ &kParameters[591], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12380,7 +12410,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[901], + /* parameters */ &kParameters[908], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12392,7 +12422,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[902], + /* parameters */ &kParameters[909], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12404,7 +12434,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[655], + /* parameters */ &kParameters[677], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12416,7 +12446,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[617], + /* parameters */ &kParameters[675], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12428,8 +12458,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[860], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[866], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpNot, }, @@ -12440,7 +12470,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[861], + /* parameters */ &kParameters[867], /* return matcher indices */ &kMatcherIndices[39], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpNot, @@ -12452,7 +12482,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[986], + /* parameters */ &kParameters[927], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12464,7 +12494,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[980], + /* parameters */ &kParameters[875], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12476,7 +12506,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[974], + /* parameters */ &kParameters[992], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12488,7 +12518,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[966], + /* parameters */ &kParameters[986], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12500,7 +12530,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[819], + /* parameters */ &kParameters[825], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12512,7 +12542,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[818], + /* parameters */ &kParameters[824], /* return matcher indices */ &kMatcherIndices[60], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12524,7 +12554,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[964], + /* parameters */ &kParameters[972], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12536,7 +12566,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[963], + /* parameters */ &kParameters[971], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12548,7 +12578,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[821], + /* parameters */ &kParameters[827], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12560,7 +12590,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[820], + /* parameters */ &kParameters[826], /* return matcher indices */ &kMatcherIndices[60], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12570,9 +12600,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[619], + /* parameters */ &kParameters[625], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12582,9 +12612,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[615], + /* parameters */ &kParameters[621], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12596,7 +12626,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[823], + /* parameters */ &kParameters[829], /* return matcher indices */ &kMatcherIndices[4], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12608,7 +12638,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[822], + /* parameters */ &kParameters[828], /* return matcher indices */ &kMatcherIndices[60], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline), /* const eval */ nullptr, @@ -12620,8 +12650,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[635], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[641], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpGreaterThanEqual, }, @@ -12630,9 +12660,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[631], + /* parameters */ &kParameters[637], /* return matcher indices */ &kMatcherIndices[39], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpGreaterThanEqual, @@ -12644,8 +12674,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[643], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[647], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpLessThanEqual, }, @@ -12656,7 +12686,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[639], + /* parameters */ &kParameters[645], /* return matcher indices */ &kMatcherIndices[39], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpLessThanEqual, @@ -12668,8 +12698,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[649], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[655], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpGreaterThan, }, @@ -12680,7 +12710,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[645], + /* parameters */ &kParameters[651], /* return matcher indices */ &kMatcherIndices[39], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpGreaterThan, @@ -12692,7 +12722,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[785], + /* parameters */ &kParameters[793], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12704,7 +12734,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[789], + /* parameters */ &kParameters[795], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12716,7 +12746,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[831], + /* parameters */ &kParameters[837], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12728,7 +12758,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[830], + /* parameters */ &kParameters[836], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12738,9 +12768,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1004], + /* parameters */ &kParameters[1010], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12750,9 +12780,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[998], + /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12762,9 +12792,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[834], + /* parameters */ &kParameters[840], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12774,9 +12804,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[833], + /* parameters */ &kParameters[839], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12786,9 +12816,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[837], + /* parameters */ &kParameters[843], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12798,9 +12828,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[835], + /* parameters */ &kParameters[842], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12810,9 +12840,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[16], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[870], + /* parameters */ &kParameters[878], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12824,7 +12854,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[869], + /* parameters */ &kParameters[877], /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12834,9 +12864,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[839], + /* parameters */ &kParameters[845], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12846,9 +12876,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[838], + /* parameters */ &kParameters[844], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12860,8 +12890,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[657], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[663], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpLessThan, }, @@ -12872,7 +12902,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[653], + /* parameters */ &kParameters[659], /* return matcher indices */ &kMatcherIndices[39], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpLessThan, @@ -12884,7 +12914,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[841], + /* parameters */ &kParameters[847], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12896,7 +12926,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[840], + /* parameters */ &kParameters[846], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12908,7 +12938,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[843], + /* parameters */ &kParameters[849], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12920,7 +12950,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[842], + /* parameters */ &kParameters[848], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12932,7 +12962,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[537], + /* parameters */ &kParameters[540], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::clamp, @@ -12944,7 +12974,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[531], + /* parameters */ &kParameters[537], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::clamp, @@ -12956,7 +12986,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[845], + /* parameters */ &kParameters[851], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -12968,130 +12998,130 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[844], + /* parameters */ &kParameters[850], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [400] */ - /* num parameters */ 1, - /* num template types */ 1, + /* num parameters */ 3, + /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[11], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[847], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[465], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [401] */ - /* num parameters */ 1, - /* num template types */ 1, - /* num template numbers */ 1, - /* template types */ &kTemplateTypes[11], - /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[846], - /* return matcher indices */ &kMatcherIndices[30], + /* num parameters */ 3, + /* num template types */ 0, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[26], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[474], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [402] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[613], + /* parameters */ &kParameters[853], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ &ConstEval::atan2, + /* const eval */ nullptr, }, { /* [403] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[749], + /* parameters */ &kParameters[852], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ &ConstEval::atan2, + /* const eval */ nullptr, }, { /* [404] */ /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[661], - /* return matcher indices */ &kMatcherIndices[20], - /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ &ConstEval::OpNotEqual, + /* parameters */ &kParameters[619], + /* return matcher indices */ &kMatcherIndices[1], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ &ConstEval::atan2, }, { /* [405] */ /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[599], - /* return matcher indices */ &kMatcherIndices[39], - /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ &ConstEval::OpNotEqual, + /* parameters */ &kParameters[757], + /* return matcher indices */ &kMatcherIndices[30], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ &ConstEval::atan2, }, { /* [406] */ /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[665], - /* return matcher indices */ &kMatcherIndices[20], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ &ConstEval::OpEqual, + /* const eval */ &ConstEval::OpNotEqual, }, { /* [407] */ /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[663], + /* parameters */ &kParameters[605], /* return matcher indices */ &kMatcherIndices[39], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ &ConstEval::OpNotEqual, + }, + { + /* [408] */ + /* num parameters */ 2, + /* num template types */ 1, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[17], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[669], + /* return matcher indices */ &kMatcherIndices[16], + /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpEqual, }, - { - /* [408] */ - /* num parameters */ 1, - /* num template types */ 1, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[11], - /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[936], - /* return matcher indices */ &kMatcherIndices[1], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, { /* [409] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[11], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[933], - /* return matcher indices */ &kMatcherIndices[30], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, + /* parameters */ &kParameters[667], + /* return matcher indices */ &kMatcherIndices[39], + /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ &ConstEval::OpEqual, }, { /* [410] */ @@ -13100,7 +13130,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[959], + /* parameters */ &kParameters[942], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13112,80 +13142,80 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[948], + /* parameters */ &kParameters[939], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [412] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[10], + /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[689], + /* parameters */ &kParameters[965], /* return matcher indices */ &kMatcherIndices[1], - /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ &ConstEval::OpXor, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, }, { /* [413] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[10], + /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[687], + /* parameters */ &kParameters[954], /* return matcher indices */ &kMatcherIndices[30], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [414] */ + /* num parameters */ 2, + /* num template types */ 1, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[24], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[699], + /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpXor, }, - { - /* [414] */ - /* num parameters */ 1, - /* num template types */ 1, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[11], - /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[961], - /* return matcher indices */ &kMatcherIndices[1], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, { /* [415] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[11], + /* template types */ &kTemplateTypes[24], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[960], + /* parameters */ &kParameters[697], /* return matcher indices */ &kMatcherIndices[30], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, + /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ &ConstEval::OpXor, }, { /* [416] */ /* num parameters */ 1, - /* num template types */ 0, + /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[26], + /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[977], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[967], + /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [417] */ /* num parameters */ 1, - /* num template types */ 0, + /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[26], + /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[973], - /* return matcher indices */ &kMatcherIndices[20], + /* parameters */ &kParameters[966], + /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -13197,7 +13227,7 @@ constexpr OverloadInfo kOverloads[] = { /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[983], - /* return matcher indices */ &kMatcherIndices[20], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -13209,31 +13239,31 @@ constexpr OverloadInfo kOverloads[] = { /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[979], - /* return matcher indices */ &kMatcherIndices[20], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [420] */ /* num parameters */ 1, - /* num template types */ 1, + /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[11], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[991], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[989], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [421] */ /* num parameters */ 1, - /* num template types */ 1, + /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[11], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[985], - /* return matcher indices */ &kMatcherIndices[30], + /* return matcher indices */ &kMatcherIndices[16], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -13256,7 +13286,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[992], + /* parameters */ &kParameters[991], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13266,48 +13296,48 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[864], + /* parameters */ &kParameters[1003], /* return matcher indices */ &kMatcherIndices[1], - /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ &ConstEval::OpUnaryMinus, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, }, { /* [425] */ /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[865], + /* parameters */ &kParameters[998], /* return matcher indices */ &kMatcherIndices[30], - /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ &ConstEval::OpUnaryMinus, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, }, { /* [426] */ /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[25], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[806], + /* parameters */ &kParameters[870], /* return matcher indices */ &kMatcherIndices[1], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, + /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ &ConstEval::OpUnaryMinus, }, { /* [427] */ /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[25], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[805], + /* parameters */ &kParameters[871], /* return matcher indices */ &kMatcherIndices[30], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, + /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ &ConstEval::OpUnaryMinus, }, { /* [428] */ @@ -13316,10 +13346,10 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[862], + /* parameters */ &kParameters[812], /* return matcher indices */ &kMatcherIndices[1], - /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ &ConstEval::OpComplement, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, }, { /* [429] */ @@ -13328,44 +13358,44 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 1, /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[863], + /* parameters */ &kParameters[811], + /* return matcher indices */ &kMatcherIndices[30], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [430] */ + /* num parameters */ 1, + /* num template types */ 1, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[24], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[868], + /* return matcher indices */ &kMatcherIndices[1], + /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ &ConstEval::OpComplement, + }, + { + /* [431] */ + /* num parameters */ 1, + /* num template types */ 1, + /* num template numbers */ 1, + /* template types */ &kTemplateTypes[24], + /* template numbers */ &kTemplateNumbers[6], + /* parameters */ &kParameters[869], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ &ConstEval::OpComplement, }, { - /* [430] */ + /* [432] */ /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[561], - /* return matcher indices */ &kMatcherIndices[208], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, - { - /* [431] */ - /* num parameters */ 2, - /* num template types */ 1, - /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], - /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[751], - /* return matcher indices */ &kMatcherIndices[1], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, - { - /* [432] */ - /* num parameters */ 2, - /* num template types */ 1, - /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], - /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[753], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[567], + /* return matcher indices */ &kMatcherIndices[206], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -13374,9 +13404,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[755], + /* parameters */ &kParameters[759], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13386,9 +13416,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[757], + /* parameters */ &kParameters[761], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13398,9 +13428,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[767], + /* parameters */ &kParameters[763], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13410,9 +13440,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[769], + /* parameters */ &kParameters[765], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13422,9 +13452,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[771], + /* parameters */ &kParameters[775], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13434,9 +13464,9 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[773], + /* parameters */ &kParameters[777], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13444,97 +13474,97 @@ constexpr OverloadInfo kOverloads[] = { { /* [439] */ /* num parameters */ 2, - /* num template types */ 0, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[26], - /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[669], - /* return matcher indices */ &kMatcherIndices[20], - /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, - { - /* [440] */ - /* num parameters */ 2, - /* num template types */ 0, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[26], - /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[667], - /* return matcher indices */ &kMatcherIndices[20], - /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, - { - /* [441] */ - /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[10], /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[787], - /* return matcher indices */ nullptr, - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, - { - /* [442] */ - /* num parameters */ 1, - /* num template types */ 1, - /* num template numbers */ 1, - /* template types */ &kTemplateTypes[14], - /* template numbers */ &kTemplateNumbers[9], - /* parameters */ &kParameters[887], + /* parameters */ &kParameters[779], /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { - /* [443] */ - /* num parameters */ 0, + /* [440] */ + /* num parameters */ 2, + /* num template types */ 1, + /* num template numbers */ 1, + /* template types */ &kTemplateTypes[10], + /* template numbers */ &kTemplateNumbers[9], + /* parameters */ &kParameters[781], + /* return matcher indices */ &kMatcherIndices[1], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [441] */ + /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], + /* parameters */ &kParameters[679], + /* return matcher indices */ &kMatcherIndices[16], + /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [442] */ + /* num parameters */ 2, + /* num template types */ 0, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[26], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[671], + /* return matcher indices */ &kMatcherIndices[16], + /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [443] */ + /* num parameters */ 2, + /* num template types */ 1, + /* num template numbers */ 1, + /* template types */ &kTemplateTypes[10], + /* template numbers */ &kTemplateNumbers[9], + /* parameters */ &kParameters[783], /* return matcher indices */ nullptr, - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline), + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [444] */ + /* num parameters */ 1, + /* num template types */ 1, + /* num template numbers */ 1, + /* template types */ &kTemplateTypes[10], + /* template numbers */ &kTemplateNumbers[9], + /* parameters */ &kParameters[893], + /* return matcher indices */ &kMatcherIndices[1], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [445] */ /* num parameters */ 0, /* num template types */ 0, /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[1006], + /* parameters */ &kParameters[1012], /* return matcher indices */ nullptr, /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, - { - /* [445] */ - /* num parameters */ 1, - /* num template types */ 0, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[26], - /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[920], - /* return matcher indices */ &kMatcherIndices[128], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, { /* [446] */ - /* num parameters */ 1, + /* num parameters */ 0, /* num template types */ 0, /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[921], - /* return matcher indices */ &kMatcherIndices[128], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* parameters */ &kParameters[1012], + /* return matcher indices */ nullptr, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { @@ -13544,8 +13574,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[939], - /* return matcher indices */ &kMatcherIndices[134], + /* parameters */ &kParameters[945], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -13556,8 +13586,8 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[949], - /* return matcher indices */ &kMatcherIndices[134], + /* parameters */ &kParameters[955], + /* return matcher indices */ &kMatcherIndices[126], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, @@ -13568,25 +13598,49 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[950], - /* return matcher indices */ &kMatcherIndices[134], + /* parameters */ &kParameters[956], + /* return matcher indices */ &kMatcherIndices[132], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [450] */ /* num parameters */ 1, - /* num template types */ 1, - /* num template numbers */ 2, - /* template types */ &kTemplateTypes[11], - /* template numbers */ &kTemplateNumbers[5], - /* parameters */ &kParameters[965], - /* return matcher indices */ &kMatcherIndices[22], + /* num template types */ 0, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[26], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[969], + /* return matcher indices */ &kMatcherIndices[132], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [451] */ + /* num parameters */ 1, + /* num template types */ 0, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[26], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[970], + /* return matcher indices */ &kMatcherIndices[132], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [452] */ + /* num parameters */ 1, + /* num template types */ 1, + /* num template numbers */ 2, + /* template types */ &kTemplateTypes[11], + /* template numbers */ &kTemplateNumbers[5], + /* parameters */ &kParameters[980], + /* return matcher indices */ &kMatcherIndices[18], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [453] */ /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 1, @@ -13598,41 +13652,17 @@ constexpr OverloadInfo kOverloads[] = { /* const eval */ nullptr, }, { - /* [452] */ + /* [454] */ /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, /* template types */ &kTemplateTypes[11], /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[699], + /* parameters */ &kParameters[707], /* return matcher indices */ &kMatcherIndices[30], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, - { - /* [453] */ - /* num parameters */ 1, - /* num template types */ 0, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[26], - /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[868], - /* return matcher indices */ &kMatcherIndices[35], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, - { - /* [454] */ - /* num parameters */ 1, - /* num template types */ 0, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[26], - /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[867], - /* return matcher indices */ &kMatcherIndices[35], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, { /* [455] */ /* num parameters */ 1, @@ -13640,7 +13670,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[866], + /* parameters */ &kParameters[874], /* return matcher indices */ &kMatcherIndices[35], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13652,7 +13682,7 @@ constexpr OverloadInfo kOverloads[] = { /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[858], + /* parameters */ &kParameters[873], /* return matcher indices */ &kMatcherIndices[35], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13660,29 +13690,53 @@ constexpr OverloadInfo kOverloads[] = { { /* [457] */ /* num parameters */ 1, - /* num template types */ 1, - /* num template numbers */ 1, - /* template types */ &kTemplateTypes[11], - /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[857], - /* return matcher indices */ &kMatcherIndices[30], + /* num template types */ 0, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[26], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[872], + /* return matcher indices */ &kMatcherIndices[35], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [458] */ - /* num parameters */ 2, - /* num template types */ 1, + /* num parameters */ 1, + /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[11], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[783], - /* return matcher indices */ &kMatcherIndices[106], + /* parameters */ &kParameters[864], + /* return matcher indices */ &kMatcherIndices[35], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [459] */ + /* num parameters */ 1, + /* num template types */ 1, + /* num template numbers */ 1, + /* template types */ &kTemplateTypes[11], + /* template numbers */ &kTemplateNumbers[6], + /* parameters */ &kParameters[863], + /* return matcher indices */ &kMatcherIndices[30], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [460] */ + /* num parameters */ 2, + /* num template types */ 1, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[11], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[791], + /* return matcher indices */ &kMatcherIndices[106], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [461] */ /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 1, @@ -13693,74 +13747,74 @@ constexpr OverloadInfo kOverloads[] = { /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, - { - /* [460] */ - /* num parameters */ 2, - /* num template types */ 0, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[26], - /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[795], - /* return matcher indices */ &kMatcherIndices[35], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, - { - /* [461] */ - /* num parameters */ 2, - /* num template types */ 0, - /* num template numbers */ 0, - /* template types */ &kTemplateTypes[26], - /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[793], - /* return matcher indices */ &kMatcherIndices[34], - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, - }, { /* [462] */ /* num parameters */ 2, - /* num template types */ 1, - /* num template numbers */ 1, - /* template types */ &kTemplateTypes[15], - /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[791], - /* return matcher indices */ &kMatcherIndices[1], + /* num template types */ 0, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[26], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[801], + /* return matcher indices */ &kMatcherIndices[35], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [463] */ - /* num parameters */ 1, - /* num template types */ 1, - /* num template numbers */ 1, - /* template types */ &kTemplateTypes[11], - /* template numbers */ &kTemplateNumbers[6], - /* parameters */ &kParameters[829], - /* return matcher indices */ &kMatcherIndices[1], + /* num parameters */ 2, + /* num template types */ 0, + /* num template numbers */ 0, + /* template types */ &kTemplateTypes[26], + /* template numbers */ &kTemplateNumbers[10], + /* parameters */ &kParameters[799], + /* return matcher indices */ &kMatcherIndices[34], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [464] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[19], - /* template numbers */ &kTemplateNumbers[8], - /* parameters */ &kParameters[962], - /* return matcher indices */ &kMatcherIndices[35], + /* template types */ &kTemplateTypes[14], + /* template numbers */ &kTemplateNumbers[6], + /* parameters */ &kParameters[797], + /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, }, { /* [465] */ /* num parameters */ 1, + /* num template types */ 1, + /* num template numbers */ 1, + /* template types */ &kTemplateTypes[11], + /* template numbers */ &kTemplateNumbers[6], + /* parameters */ &kParameters[835], + /* return matcher indices */ &kMatcherIndices[1], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [466] */ + /* num parameters */ 1, + /* num template types */ 1, + /* num template numbers */ 1, + /* template types */ &kTemplateTypes[18], + /* template numbers */ &kTemplateNumbers[8], + /* parameters */ &kParameters[968], + /* return matcher indices */ &kMatcherIndices[35], + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* const eval */ nullptr, + }, + { + /* [467] */ + /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], - /* parameters */ &kParameters[859], + /* parameters */ &kParameters[865], /* return matcher indices */ &kMatcherIndices[35], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* const eval */ nullptr, @@ -13780,69 +13834,69 @@ constexpr IntrinsicInfo kBuiltins[] = { /* fn acos(T) -> T */ /* fn acos(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[422], + /* overloads */ &kOverloads[424], }, { /* [2] */ /* fn acosh(T) -> T */ /* fn acosh(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[420], + /* overloads */ &kOverloads[422], }, { /* [3] */ /* fn all(bool) -> bool */ /* fn all(vec) -> bool */ /* num overloads */ 2, - /* overloads */ &kOverloads[418], + /* overloads */ &kOverloads[420], }, { /* [4] */ /* fn any(bool) -> bool */ /* fn any(vec) -> bool */ /* num overloads */ 2, - /* overloads */ &kOverloads[416], + /* overloads */ &kOverloads[418], }, { /* [5] */ /* fn arrayLength(ptr, A>) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[464], + /* overloads */ &kOverloads[466], }, { /* [6] */ /* fn asin(T) -> T */ /* fn asin(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[414], + /* overloads */ &kOverloads[416], }, { /* [7] */ /* fn asinh(T) -> T */ /* fn asinh(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[410], + /* overloads */ &kOverloads[412], }, { /* [8] */ /* fn atan(T) -> T */ /* fn atan(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[408], + /* overloads */ &kOverloads[410], }, { /* [9] */ /* fn atan2(T, T) -> T */ /* fn atan2(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[402], + /* overloads */ &kOverloads[404], }, { /* [10] */ /* fn atanh(T) -> T */ /* fn atanh(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[400], + /* overloads */ &kOverloads[402], }, { /* [11] */ @@ -13897,7 +13951,7 @@ constexpr IntrinsicInfo kBuiltins[] = { /* [18] */ /* fn cross(vec3, vec3) -> vec3 */ /* num overloads */ 1, - /* overloads */ &kOverloads[458], + /* overloads */ &kOverloads[460], }, { /* [19] */ @@ -13910,7 +13964,7 @@ constexpr IntrinsicInfo kBuiltins[] = { /* [20] */ /* fn determinant(mat) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[463], + /* overloads */ &kOverloads[465], }, { /* [21] */ @@ -13923,19 +13977,19 @@ constexpr IntrinsicInfo kBuiltins[] = { /* [22] */ /* fn dot(vec, vec) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[462], + /* overloads */ &kOverloads[464], }, { /* [23] */ /* fn dot4I8Packed(u32, u32) -> i32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[461], + /* overloads */ &kOverloads[463], }, { /* [24] */ /* fn dot4U8Packed(u32, u32) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[460], + /* overloads */ &kOverloads[462], }, { /* [25] */ @@ -14004,7 +14058,7 @@ constexpr IntrinsicInfo kBuiltins[] = { /* [34] */ /* fn faceForward(vec, vec, vec) -> vec */ /* num overloads */ 1, - /* overloads */ &kOverloads[459], + /* overloads */ &kOverloads[461], }, { /* [35] */ @@ -14018,7 +14072,7 @@ constexpr IntrinsicInfo kBuiltins[] = { /* fn firstTrailingBit(T) -> T */ /* fn firstTrailingBit(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[426], + /* overloads */ &kOverloads[428], }, { /* [37] */ @@ -14144,37 +14198,37 @@ constexpr IntrinsicInfo kBuiltins[] = { /* [54] */ /* fn normalize(vec) -> vec */ /* num overloads */ 1, - /* overloads */ &kOverloads[457], + /* overloads */ &kOverloads[459], }, { /* [55] */ /* fn pack2x16float(vec2) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[456], + /* overloads */ &kOverloads[458], }, { /* [56] */ /* fn pack2x16snorm(vec2) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[465], + /* overloads */ &kOverloads[467], }, { /* [57] */ /* fn pack2x16unorm(vec2) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[455], + /* overloads */ &kOverloads[457], }, { /* [58] */ /* fn pack4x8snorm(vec4) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[454], + /* overloads */ &kOverloads[456], }, { /* [59] */ /* fn pack4x8unorm(vec4) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[453], + /* overloads */ &kOverloads[455], }, { /* [60] */ @@ -14194,13 +14248,13 @@ constexpr IntrinsicInfo kBuiltins[] = { /* [62] */ /* fn reflect(vec, vec) -> vec */ /* num overloads */ 1, - /* overloads */ &kOverloads[452], + /* overloads */ &kOverloads[454], }, { /* [63] */ /* fn refract(vec, vec, T) -> vec */ /* num overloads */ 1, - /* overloads */ &kOverloads[451], + /* overloads */ &kOverloads[453], }, { /* [64] */ @@ -14277,7 +14331,7 @@ constexpr IntrinsicInfo kBuiltins[] = { /* [74] */ /* fn storageBarrier() */ /* num overloads */ 1, - /* overloads */ &kOverloads[443], + /* overloads */ &kOverloads[445], }, { /* [75] */ @@ -14297,7 +14351,7 @@ constexpr IntrinsicInfo kBuiltins[] = { /* [77] */ /* fn transpose(mat) -> mat */ /* num overloads */ 1, - /* overloads */ &kOverloads[450], + /* overloads */ &kOverloads[452], }, { /* [78] */ @@ -14310,37 +14364,37 @@ constexpr IntrinsicInfo kBuiltins[] = { /* [79] */ /* fn unpack2x16float(u32) -> vec2 */ /* num overloads */ 1, - /* overloads */ &kOverloads[449], + /* overloads */ &kOverloads[451], }, { /* [80] */ /* fn unpack2x16snorm(u32) -> vec2 */ /* num overloads */ 1, - /* overloads */ &kOverloads[448], + /* overloads */ &kOverloads[450], }, { /* [81] */ /* fn unpack2x16unorm(u32) -> vec2 */ /* num overloads */ 1, - /* overloads */ &kOverloads[447], + /* overloads */ &kOverloads[449], }, { /* [82] */ /* fn unpack4x8snorm(u32) -> vec4 */ /* num overloads */ 1, - /* overloads */ &kOverloads[446], + /* overloads */ &kOverloads[448], }, { /* [83] */ /* fn unpack4x8unorm(u32) -> vec4 */ /* num overloads */ 1, - /* overloads */ &kOverloads[445], + /* overloads */ &kOverloads[447], }, { /* [84] */ /* fn workgroupBarrier() */ /* num overloads */ 1, - /* overloads */ &kOverloads[444], + /* overloads */ &kOverloads[446], }, { /* [85] */ @@ -14524,6 +14578,13 @@ constexpr IntrinsicInfo kBuiltins[] = { }, { /* [97] */ + /* fn textureSampleBaseClampToEdge(texture: texture_2d, sampler: sampler, coords: vec2) -> vec4 */ + /* fn textureSampleBaseClampToEdge(texture: texture_external, sampler: sampler, coords: vec2) -> vec4 */ + /* num overloads */ 2, + /* overloads */ &kOverloads[400], + }, + { + /* [98] */ /* fn textureStore(texture: texture_storage_1d, coords: i32, value: vec4) */ /* fn textureStore(texture: texture_storage_2d, coords: vec2, value: vec4) */ /* fn textureStore(texture: texture_storage_2d_array, coords: vec2, array_index: i32, value: vec4) */ @@ -14540,7 +14601,7 @@ constexpr IntrinsicInfo kBuiltins[] = { /* overloads */ &kOverloads[72], }, { - /* [98] */ + /* [99] */ /* fn textureLoad(texture: texture_1d, coords: i32, level: i32) -> vec4 */ /* fn textureLoad(texture: texture_2d, coords: vec2, level: i32) -> vec4 */ /* fn textureLoad(texture: texture_2d_array, coords: vec2, array_index: i32, level: i32) -> vec4 */ @@ -14554,70 +14615,70 @@ constexpr IntrinsicInfo kBuiltins[] = { /* overloads */ &kOverloads[126], }, { - /* [99] */ + /* [100] */ /* fn atomicLoad(ptr, read_write>) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[442], - }, - { - /* [100] */ - /* fn atomicStore(ptr, read_write>, T) */ - /* num overloads */ 1, - /* overloads */ &kOverloads[441], + /* overloads */ &kOverloads[444], }, { /* [101] */ + /* fn atomicStore(ptr, read_write>, T) */ + /* num overloads */ 1, + /* overloads */ &kOverloads[443], + }, + { + /* [102] */ /* fn atomicAdd(ptr, read_write>, T) -> T */ /* num overloads */ 1, + /* overloads */ &kOverloads[440], + }, + { + /* [103] */ + /* fn atomicSub(ptr, read_write>, T) -> T */ + /* num overloads */ 1, + /* overloads */ &kOverloads[439], + }, + { + /* [104] */ + /* fn atomicMax(ptr, read_write>, T) -> T */ + /* num overloads */ 1, /* overloads */ &kOverloads[438], }, { - /* [102] */ - /* fn atomicSub(ptr, read_write>, T) -> T */ + /* [105] */ + /* fn atomicMin(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[437], }, { - /* [103] */ - /* fn atomicMax(ptr, read_write>, T) -> T */ + /* [106] */ + /* fn atomicAnd(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[436], }, { - /* [104] */ - /* fn atomicMin(ptr, read_write>, T) -> T */ + /* [107] */ + /* fn atomicOr(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[435], }, { - /* [105] */ - /* fn atomicAnd(ptr, read_write>, T) -> T */ + /* [108] */ + /* fn atomicXor(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[434], }, { - /* [106] */ - /* fn atomicOr(ptr, read_write>, T) -> T */ + /* [109] */ + /* fn atomicExchange(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[433], }, { - /* [107] */ - /* fn atomicXor(ptr, read_write>, T) -> T */ - /* num overloads */ 1, - /* overloads */ &kOverloads[432], - }, - { - /* [108] */ - /* fn atomicExchange(ptr, read_write>, T) -> T */ - /* num overloads */ 1, - /* overloads */ &kOverloads[431], - }, - { - /* [109] */ + /* [110] */ /* fn atomicCompareExchangeWeak(ptr, read_write>, T, T) -> __atomic_compare_exchange_result */ /* num overloads */ 1, - /* overloads */ &kOverloads[430], + /* overloads */ &kOverloads[432], }, }; @@ -14634,14 +14695,14 @@ constexpr IntrinsicInfo kUnaryOperators[] = { /* op ~(T) -> T */ /* op ~(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[428], + /* overloads */ &kOverloads[430], }, { /* [2] */ /* op -(T) -> T */ /* op -(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[424], + /* overloads */ &kOverloads[426], }, }; constexpr uint8_t kUnaryOperatorNot = 0; @@ -14706,7 +14767,7 @@ constexpr IntrinsicInfo kBinaryOperators[] = { /* op ^(T, T) -> T */ /* op ^(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[412], + /* overloads */ &kOverloads[414], }, { /* [6] */ @@ -14730,27 +14791,27 @@ constexpr IntrinsicInfo kBinaryOperators[] = { /* [8] */ /* op &&(bool, bool) -> bool */ /* num overloads */ 1, - /* overloads */ &kOverloads[439], + /* overloads */ &kOverloads[441], }, { /* [9] */ /* op ||(bool, bool) -> bool */ /* num overloads */ 1, - /* overloads */ &kOverloads[440], + /* overloads */ &kOverloads[442], }, { /* [10] */ /* op ==(T, T) -> bool */ /* op ==(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[406], + /* overloads */ &kOverloads[408], }, { /* [11] */ /* op !=(T, T) -> bool */ /* op !=(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[404], + /* overloads */ &kOverloads[406], }, { /* [12] */ diff --git a/src/tint/sem/builtin.cc b/src/tint/sem/builtin.cc index ecb23319f0..26d6e4f27c 100644 --- a/src/tint/sem/builtin.cc +++ b/src/tint/sem/builtin.cc @@ -57,11 +57,17 @@ bool IsDerivativeBuiltin(BuiltinType i) { } bool IsTextureBuiltin(BuiltinType i) { - return IsImageQueryBuiltin(i) || i == BuiltinType::kTextureLoad || - i == BuiltinType::kTextureGather || i == BuiltinType::kTextureGatherCompare || - i == BuiltinType::kTextureSample || i == BuiltinType::kTextureSampleLevel || - i == BuiltinType::kTextureSampleBias || i == BuiltinType::kTextureSampleCompare || - i == BuiltinType::kTextureSampleCompareLevel || i == BuiltinType::kTextureSampleGrad || + return IsImageQueryBuiltin(i) || // + i == BuiltinType::kTextureGather || // + i == BuiltinType::kTextureGatherCompare || // + i == BuiltinType::kTextureLoad || // + i == BuiltinType::kTextureSample || // + i == BuiltinType::kTextureSampleBaseClampToEdge || // + i == BuiltinType::kTextureSampleBias || // + i == BuiltinType::kTextureSampleCompare || // + i == BuiltinType::kTextureSampleCompareLevel || // + i == BuiltinType::kTextureSampleGrad || // + i == BuiltinType::kTextureSampleLevel || // i == BuiltinType::kTextureStore; } diff --git a/src/tint/sem/builtin_type.cc b/src/tint/sem/builtin_type.cc index 463bfb2869..608965fbee 100644 --- a/src/tint/sem/builtin_type.cc +++ b/src/tint/sem/builtin_type.cc @@ -318,6 +318,9 @@ BuiltinType ParseBuiltinType(const std::string& name) { if (name == "textureSampleLevel") { return BuiltinType::kTextureSampleLevel; } + if (name == "textureSampleBaseClampToEdge") { + return BuiltinType::kTextureSampleBaseClampToEdge; + } if (name == "textureStore") { return BuiltinType::kTextureStore; } @@ -558,6 +561,8 @@ const char* str(BuiltinType i) { return "textureSampleGrad"; case BuiltinType::kTextureSampleLevel: return "textureSampleLevel"; + case BuiltinType::kTextureSampleBaseClampToEdge: + return "textureSampleBaseClampToEdge"; case BuiltinType::kTextureStore: return "textureStore"; case BuiltinType::kTextureLoad: diff --git a/src/tint/sem/builtin_type.h b/src/tint/sem/builtin_type.h index 84b1f4e9f9..19786a3678 100644 --- a/src/tint/sem/builtin_type.h +++ b/src/tint/sem/builtin_type.h @@ -128,6 +128,7 @@ enum class BuiltinType { kTextureSampleCompareLevel, kTextureSampleGrad, kTextureSampleLevel, + kTextureSampleBaseClampToEdge, kTextureStore, kTextureLoad, kAtomicLoad, diff --git a/src/tint/sem/call_target.cc b/src/tint/sem/call_target.cc index e3b03d4156..d063fdd7c8 100644 --- a/src/tint/sem/call_target.cc +++ b/src/tint/sem/call_target.cc @@ -34,7 +34,7 @@ CallTarget::CallTarget(const CallTarget&) = default; CallTarget::~CallTarget() = default; CallTargetSignature::CallTargetSignature(const sem::Type* ret_ty, - utils::VectorRef params) + utils::VectorRef params) : return_type(ret_ty), parameters(std::move(params)) {} CallTargetSignature::CallTargetSignature(const CallTargetSignature&) = default; CallTargetSignature::~CallTargetSignature() = default; diff --git a/src/tint/sem/call_target.h b/src/tint/sem/call_target.h index 3f7fec1ce6..981eabb05e 100644 --- a/src/tint/sem/call_target.h +++ b/src/tint/sem/call_target.h @@ -57,6 +57,14 @@ struct CallTargetSignature { /// @returns the index of the parameter with the given usage, or -1 if no /// parameter with the given usage exists. int IndexOf(ParameterUsage usage) const; + + /// @param usage the parameter usage to find + /// @returns the the parameter with the given usage, or nullptr if no parameter with the given + /// usage exists. + inline const sem::Parameter* Parameter(ParameterUsage usage) const { + auto idx = IndexOf(usage); + return (idx >= 0) ? parameters[static_cast(idx)] : nullptr; + } }; /// CallTarget is the base for callable functions, builtins, type constructors diff --git a/src/tint/transform/builtin_polyfill.cc b/src/tint/transform/builtin_polyfill.cc index 42f95ded4e..e53dad75a3 100644 --- a/src/tint/transform/builtin_polyfill.cc +++ b/src/tint/transform/builtin_polyfill.cc @@ -512,6 +512,29 @@ struct BuiltinPolyfill::State { return name; } + /// Builds the polyfill function for the `textureSampleBaseClampToEdge` builtin, when the + /// texture type is texture_2d. + /// @return the polyfill function name + Symbol textureSampleBaseClampToEdge_2d_f32() { + auto name = b.Symbols().New("tint_textureSampleBaseClampToEdge"); + auto body = utils::Vector{ + b.Decl(b.Let("dims", + b.Construct(b.ty.vec2(), b.Call("textureDimensions", "t", 0_a)))), + b.Decl(b.Let("half_texel", b.Div(b.vec2(0.5_a), "dims"))), + b.Decl( + b.Let("clamped", b.Call("clamp", "coord", "half_texel", b.Sub(1_a, "half_texel")))), + b.Return(b.Call("textureSampleLevel", "t", "s", "clamped", 0_a)), + }; + b.Func(name, + utils::Vector{ + b.Param("t", b.ty.sampled_texture(ast::TextureDimension::k2d, b.ty.f32())), + b.Param("s", b.ty.sampler(ast::SamplerKind::kSampler)), + b.Param("coord", b.ty.vec2()), + }, + b.ty.vec4(), body); + return name; + } + private: /// @returns the AST type for the given sem type const ast::Type* T(const sem::Type* ty) const { return CreateASTTypeFor(ctx, ty); } @@ -597,6 +620,15 @@ bool BuiltinPolyfill::ShouldRun(const Program* program, const DataMap& data) con return true; } break; + case sem::BuiltinType::kTextureSampleBaseClampToEdge: + if (builtins.texture_sample_base_clamp_to_edge_2d_f32) { + auto& sig = builtin->Signature(); + auto* tex = sig.Parameter(sem::ParameterUsage::kTexture); + if (auto* stex = tex->Type()->As()) { + return stex->type()->Is(); + } + } + break; default: break; } @@ -690,6 +722,19 @@ void BuiltinPolyfill::Run(CloneContext& ctx, const DataMap& data, DataMap&) cons }); } break; + case sem::BuiltinType::kTextureSampleBaseClampToEdge: + if (builtins.texture_sample_base_clamp_to_edge_2d_f32) { + auto& sig = builtin->Signature(); + auto* tex = sig.Parameter(sem::ParameterUsage::kTexture); + if (auto* stex = tex->Type()->As()) { + if (stex->type()->Is()) { + polyfill = utils::GetOrCreate(polyfills, builtin, [&] { + return s.textureSampleBaseClampToEdge_2d_f32(); + }); + } + } + } + break; default: break; } diff --git a/src/tint/transform/builtin_polyfill.h b/src/tint/transform/builtin_polyfill.h index d69d516d02..14720bf977 100644 --- a/src/tint/transform/builtin_polyfill.h +++ b/src/tint/transform/builtin_polyfill.h @@ -61,6 +61,8 @@ class BuiltinPolyfill final : public Castable { Level insert_bits = Level::kNone; /// Should `saturate()` be polyfilled? bool saturate = false; + /// Should `textureSampleBaseClampToEdge()` be polyfilled for texture_2d textures? + bool texture_sample_base_clamp_to_edge_2d_f32 = false; }; /// Config is consumed by the BuiltinPolyfill transform. diff --git a/src/tint/transform/builtin_polyfill_test.cc b/src/tint/transform/builtin_polyfill_test.cc index d47289669f..7c8440b536 100644 --- a/src/tint/transform/builtin_polyfill_test.cc +++ b/src/tint/transform/builtin_polyfill_test.cc @@ -1549,5 +1549,76 @@ fn f() { EXPECT_EQ(expect, str(got)); } +//////////////////////////////////////////////////////////////////////////////// +// textureSampleBaseClampToEdge +//////////////////////////////////////////////////////////////////////////////// +DataMap polyfillTextureSampleBaseClampToEdge_2d_f32() { + BuiltinPolyfill::Builtins builtins; + builtins.texture_sample_base_clamp_to_edge_2d_f32 = true; + DataMap data; + data.Add(builtins); + return data; +} + +TEST_F(BuiltinPolyfillTest, ShouldRunTextureSampleBaseClampToEdge_2d_f32) { + auto* src = R"( +@group(0) @binding(0) var t : texture_2d; +@group(0) @binding(1) var s : sampler; + +fn f() { + textureSampleBaseClampToEdge(t, s, vec2(0.5)); +} +)"; + + EXPECT_FALSE(ShouldRun(src)); + EXPECT_TRUE(ShouldRun(src, polyfillTextureSampleBaseClampToEdge_2d_f32())); +} + +TEST_F(BuiltinPolyfillTest, ShouldRunTextureSampleBaseClampToEdge_external) { + auto* src = R"( +@group(0) @binding(0) var t : texture_external; +@group(0) @binding(1) var s : sampler; + +fn f() { + textureSampleBaseClampToEdge(t, s, vec2(0.5)); +} +)"; + + EXPECT_FALSE(ShouldRun(src)); + EXPECT_FALSE(ShouldRun(src, polyfillTextureSampleBaseClampToEdge_2d_f32())); +} + +TEST_F(BuiltinPolyfillTest, TextureSampleBaseClampToEdge_2d_f32_f32) { + auto* src = R"( +@group(0) @binding(0) var t : texture_2d; +@group(0) @binding(1) var s : sampler; + +fn f() { + let r = textureSampleBaseClampToEdge(t, s, vec2(0.5)); +} +)"; + + auto* expect = R"( +@group(0) @binding(0) var t : texture_2d; + +@group(0) @binding(1) var s : sampler; + +fn tint_textureSampleBaseClampToEdge(t : texture_2d, s : sampler, coord : vec2) -> vec4 { + let dims = vec2(textureDimensions(t, 0)); + let half_texel = (vec2(0.5) / dims); + let clamped = clamp(coord, half_texel, (1 - half_texel)); + return textureSampleLevel(t, s, clamped, 0); +} + +fn f() { + let r = tint_textureSampleBaseClampToEdge(t, s, vec2(0.5)); +} +)"; + + auto got = Run(src, polyfillTextureSampleBaseClampToEdge_2d_f32()); + + EXPECT_EQ(expect, str(got)); +} + } // namespace } // namespace tint::transform diff --git a/src/tint/transform/multiplanar_external_texture.cc b/src/tint/transform/multiplanar_external_texture.cc index 74ce22e166..d75e7a2e74 100644 --- a/src/tint/transform/multiplanar_external_texture.cc +++ b/src/tint/transform/multiplanar_external_texture.cc @@ -31,8 +31,8 @@ using namespace tint::number_suffixes; // NOLINT namespace tint::transform { namespace { -/// This struct stores symbols for new bindings created as a result of -/// transforming a texture_external instance. +/// This struct stores symbols for new bindings created as a result of transforming a +/// texture_external instance. struct NewBindingSymbols { Symbol params; Symbol plane_0; @@ -64,11 +64,14 @@ struct MultiplanarExternalTexture::State { /// Symbol for the textureSampleExternal function Symbol texture_sample_external_sym; + /// Symbol for the textureSampleExternalDEPRECATED function + Symbol texture_sample_external_deprecated_sym; + /// Symbol for the gammaCorrection function Symbol gamma_correction_sym; - /// Storage for new bindings that have been created corresponding to an - /// original texture_external binding. + /// Storage for new bindings that have been created corresponding to an original + /// texture_external binding. std::unordered_map new_binding_symbols; /// Constructor @@ -82,33 +85,30 @@ struct MultiplanarExternalTexture::State { void Process() { auto& sem = ctx.src->Sem(); - // For each texture_external binding, we replace it with a texture_2d - // binding and create two additional bindings (one texture_2d to - // represent the secondary plane and one uniform buffer for the - // ExternalTextureParams struct). + // For each texture_external binding, we replace it with a texture_2d binding and + // create two additional bindings (one texture_2d to represent the secondary plane and + // one uniform buffer for the ExternalTextureParams struct). for (auto* global : ctx.src->AST().GlobalVariables()) { auto* sem_var = sem.Get(global); if (!sem_var->Type()->UnwrapRef()->Is()) { continue; } - // If the attributes are empty, then this must be a texture_external - // passed as a function parameter. These variables are transformed - // elsewhere. + // If the attributes are empty, then this must be a texture_external passed as a + // function parameter. These variables are transformed elsewhere. if (global->attributes.IsEmpty()) { continue; } - // If we find a texture_external binding, we know we must emit the - // ExternalTextureParams struct. + // If we find a texture_external binding, we know we must emit the ExternalTextureParams + // struct. if (!params_struct_sym.IsValid()) { createExtTexParamsStructs(); } - // The binding points for the newly introduced bindings must have been - // provided to this transform. We fetch the new binding points by - // providing the original texture_external binding points into the - // passed map. + // The binding points for the newly introduced bindings must have been provided to this + // transform. We fetch the new binding points by providing the original texture_external + // binding points into the passed map. BindingPoint bp = sem_var->BindingPoint(); BindingsMap::const_iterator it = new_binding_points->bindings_map.find(bp); @@ -122,10 +122,9 @@ struct MultiplanarExternalTexture::State { BindingPoints bps = it->second; - // Symbols for the newly created bindings must be saved so they can be - // passed as parameters later. These are placed in a map and keyed by - // the source symbol associated with the texture_external binding that - // corresponds with the new destination bindings. + // Symbols for the newly created bindings must be saved so they can be passed as + // parameters later. These are placed in a map and keyed by the source symbol associated + // with the texture_external binding that corresponds with the new destination bindings. // NewBindingSymbols new_binding_syms; auto& syms = new_binding_symbols[sem_var]; syms.plane_0 = ctx.Clone(global->symbol); @@ -137,8 +136,7 @@ struct MultiplanarExternalTexture::State { ast::StorageClass::kUniform, b.Group(AInt(bps.params.group)), b.Binding(AInt(bps.params.binding))); - // Replace the original texture_external binding with a texture_2d - // binding. + // Replace the original texture_external binding with a texture_2d binding. auto cloned_attributes = ctx.Clone(global->attributes); const ast::Expression* cloned_constructor = ctx.Clone(global->constructor); @@ -148,23 +146,22 @@ struct MultiplanarExternalTexture::State { ctx.Replace(global, replacement); } - // We must update all the texture_external parameters for user declared - // functions. + // We must update all the texture_external parameters for user declared functions. for (auto* fn : ctx.src->AST().Functions()) { for (const ast::Variable* param : fn->params) { if (auto* sem_var = sem.Get(param)) { if (!sem_var->Type()->UnwrapRef()->Is()) { continue; } - // If we find a texture_external, we must ensure the - // ExternalTextureParams struct exists. + // If we find a texture_external, we must ensure the ExternalTextureParams + // struct exists. if (!params_struct_sym.IsValid()) { createExtTexParamsStructs(); } - // When a texture_external is found, we insert all components - // the texture_external into the parameter list. We must also place - // the new symbols into the transform state so they can be used when - // transforming function calls. + // When a texture_external is found, we insert all components the + // texture_external into the parameter list. We must also place the new symbols + // into the transform state so they can be used when transforming function + // calls. auto& syms = new_binding_symbols[sem_var]; syms.plane_0 = ctx.Clone(param->symbol); syms.plane_1 = b.Symbols().New("ext_tex_plane_1"); @@ -180,8 +177,8 @@ struct MultiplanarExternalTexture::State { } } - // Transform the original textureLoad and textureSampleLevel calls into - // textureLoadExternal and textureSampleExternal calls. + // Transform the external texture builtin calls into calls to the external texture + // functions. ctx.ReplaceAll([&](const ast::CallExpression* expr) -> const ast::CallExpression* { auto* call = sem.Get(expr)->UnwrapMaterialize()->As(); auto* builtin = call->Target()->As(); @@ -192,28 +189,29 @@ struct MultiplanarExternalTexture::State { if (auto* var_user = sem.Get(expr->args[0])) { auto it = new_binding_symbols.find(var_user->Variable()); if (it == new_binding_symbols.end()) { - // If valid new binding locations were not provided earlier, we - // would have been unable to create these symbols. An error - // message was emitted earlier, so just return early to avoid - // internal compiler errors and retain a clean error message. + // If valid new binding locations were not provided earlier, we would have + // been unable to create these symbols. An error message was emitted + // earlier, so just return early to avoid internal compiler errors and + // retain a clean error message. return nullptr; } auto& syms = it->second; - if (builtin->Type() == sem::BuiltinType::kTextureLoad) { - return createTexLdExt(expr, syms); - } - - if (builtin->Type() == sem::BuiltinType::kTextureSampleLevel) { - return createTexSmpExt(expr, syms); + switch (builtin->Type()) { + case sem::BuiltinType::kTextureLoad: + return createTextureLoad(expr, syms); + case sem::BuiltinType::kTextureSampleLevel: + return createTextureSampleLevel(expr, syms); + case sem::BuiltinType::kTextureSampleBaseClampToEdge: + return createTextureSampleBaseClampToEdge(expr, syms); + default: + break; } } - } else if (call->Target()->Is()) { - // The call expression may be to a user-defined function that - // contains a texture_external parameter. These need to be expanded - // out to multiple plane textures and the texture parameters - // structure. + // The call expression may be to a user-defined function that contains a + // texture_external parameter. These need to be expanded out to multiple plane + // textures and the texture parameters structure. for (auto* arg : expr->args) { if (auto* var_user = sem.Get(arg)) { // Check if a parameter is a texture_external by trying to find @@ -296,38 +294,69 @@ struct MultiplanarExternalTexture::State { }); } - /// Constructs a StatementList containing all the statements making up the - /// bodies of the textureSampleExternal and textureLoadExternal functions. + /// Constructs a StatementList containing all the statements making up the body of the texture + /// builtin function. /// @param call_type determines which function body to generate /// @returns a statement list that makes of the body of the chosen function - auto createTexFnExtStatementList(sem::BuiltinType call_type) { + auto buildTextureBuiltinBody(sem::BuiltinType call_type) { + utils::Vector stmts; const ast::CallExpression* single_plane_call = nullptr; const ast::CallExpression* plane_0_call = nullptr; const ast::CallExpression* plane_1_call = nullptr; - if (call_type == sem::BuiltinType::kTextureSampleLevel) { - // textureSampleLevel(plane0, smp, coord.xy, 0.0); - single_plane_call = b.Call("textureSampleLevel", "plane0", "smp", "coord", 0_f); - // textureSampleLevel(plane0, smp, coord.xy, 0.0); - plane_0_call = b.Call("textureSampleLevel", "plane0", "smp", "coord", 0_f); - // textureSampleLevel(plane1, smp, coord.xy, 0.0); - plane_1_call = b.Call("textureSampleLevel", "plane1", "smp", "coord", 0_f); - } else if (call_type == sem::BuiltinType::kTextureLoad) { - // textureLoad(plane0, coords.xy, 0); - single_plane_call = b.Call("textureLoad", "plane0", "coord", 0_i); - // textureLoad(plane0, coords.xy, 0); - plane_0_call = b.Call("textureLoad", "plane0", "coord", 0_i); - // textureLoad(plane1, coords.xy, 0); - plane_1_call = b.Call("textureLoad", "plane1", "coord", 0_i); - } else { - TINT_ICE(Transform, b.Diagnostics()) << "unhandled builtin: " << call_type; + switch (call_type) { + case sem::BuiltinType::kTextureSampleLevel: + // TODO(crbug.com/tint/1671): DEPRECATED + // textureSampleLevel(plane0, smp, coord, 0.0); + single_plane_call = b.Call("textureSampleLevel", "plane0", "smp", "coord", 0_f); + // textureSampleLevel(plane0, smp, coord, 0.0); + plane_0_call = b.Call("textureSampleLevel", "plane0", "smp", "coord", 0_f); + // textureSampleLevel(plane1, smp, coord, 0.0); + plane_1_call = b.Call("textureSampleLevel", "plane1", "smp", "coord", 0_f); + break; + case sem::BuiltinType::kTextureSampleBaseClampToEdge: + stmts.Push(b.Decl(b.Let( + "plane0_dims", + b.Construct(b.ty.vec2(), b.Call("textureDimensions", "plane0", 0_a))))); + stmts.Push( + b.Decl(b.Let("plane0_half_texel", b.Div(b.vec2(0.5_a), "plane0_dims")))); + stmts.Push( + b.Decl(b.Let("plane0_clamped", b.Call("clamp", "coord", "plane0_half_texel", + b.Sub(1_a, "plane0_half_texel"))))); + stmts.Push(b.Decl(b.Let( + "plane1_dims", + b.Construct(b.ty.vec2(), b.Call("textureDimensions", "plane1", 0_a))))); + stmts.Push( + b.Decl(b.Let("plane1_half_texel", b.Div(b.vec2(0.5_a), "plane1_dims")))); + stmts.Push( + b.Decl(b.Let("plane1_clamped", b.Call("clamp", "coord", "plane1_half_texel", + b.Sub(1_a, "plane1_half_texel"))))); + + // textureSampleLevel(plane0, smp, plane0_clamped, 0.0); + single_plane_call = + b.Call("textureSampleLevel", "plane0", "smp", "plane0_clamped", 0_f); + // textureSampleLevel(plane0, smp, plane0_clamped, 0.0); + plane_0_call = b.Call("textureSampleLevel", "plane0", "smp", "plane0_clamped", 0_f); + // textureSampleLevel(plane1, smp, plane1_clamped, 0.0); + plane_1_call = b.Call("textureSampleLevel", "plane1", "smp", "plane1_clamped", 0_f); + break; + case sem::BuiltinType::kTextureLoad: + // textureLoad(plane0, coord, 0); + single_plane_call = b.Call("textureLoad", "plane0", "coord", 0_i); + // textureLoad(plane0, coord, 0); + plane_0_call = b.Call("textureLoad", "plane0", "coord", 0_i); + // textureLoad(plane1, coord, 0); + plane_1_call = b.Call("textureLoad", "plane1", "coord", 0_i); + break; + default: + TINT_ICE(Transform, b.Diagnostics()) << "unhandled builtin: " << call_type; } - return utils::Vector{ - // var color: vec3; - b.Decl(b.Var("color", b.ty.vec3(b.ty.f32()))), - // if ((params.numPlanes == 1u)) - b.If(b.create( - ast::BinaryOp::kEqual, b.MemberAccessor("params", "numPlanes"), b.Expr(1_u)), + // var color: vec3; + stmts.Push(b.Decl(b.Var("color", b.ty.vec3(b.ty.f32())))); + + // if ((params.numPlanes == 1u)) + stmts.Push( + b.If(b.Equal(b.MemberAccessor("params", "numPlanes"), b.Expr(1_u)), b.Block( // color = textureLoad(plane0, coord, 0).rgb; b.Assign("color", b.MemberAccessor(single_plane_call, "rgb"))), @@ -337,11 +366,11 @@ struct MultiplanarExternalTexture::State { b.Assign("color", b.Mul(b.vec4(b.MemberAccessor(plane_0_call, "r"), b.MemberAccessor(plane_1_call, "rg"), 1_f), - b.MemberAccessor("params", "yuvToRgbConversionMatrix")))))), - // if (params.doYuvToRgbConversionOnly == 0u) - b.If(b.create( - ast::BinaryOp::kEqual, b.MemberAccessor("params", "doYuvToRgbConversionOnly"), - b.Expr(0_u)), + b.MemberAccessor("params", "yuvToRgbConversionMatrix"))))))); + + // if (params.doYuvToRgbConversionOnly == 0u) + stmts.Push( + b.If(b.Equal(b.MemberAccessor("params", "doYuvToRgbConversionOnly"), b.Expr(0_u)), b.Block( // color = gammaConversion(color, gammaDecodeParams); b.Assign("color", b.Call("gammaCorrection", "color", @@ -351,18 +380,21 @@ struct MultiplanarExternalTexture::State { b.Mul(b.MemberAccessor("params", "gamutConversionMatrix"), "color")), // color = gammaConversion(color, gammaEncodeParams); b.Assign("color", b.Call("gammaCorrection", "color", - b.MemberAccessor("params", "gammaEncodeParams"))))), - // return vec4(color, 1.f); - b.Return(b.vec4("color", 1_f))}; + b.MemberAccessor("params", "gammaEncodeParams")))))); + + // return vec4(color, 1.f); + stmts.Push(b.Return(b.vec4("color", 1_f))); + + return stmts; } - /// Creates the textureSampleExternal function if needed and returns a call - /// expression to it. + /// Creates the textureSampleExternal function if needed and returns a call expression to it. + /// TODO(crbug.com/tint/1671): DEPRECATED: Replaced with createTextureSampleBaseClampToEdge(). /// @param expr the call expression being transformed /// @param syms the expanded symbols to be used in the new call /// @returns a call expression to textureSampleExternal - const ast::CallExpression* createTexSmpExt(const ast::CallExpression* expr, - NewBindingSymbols syms) { + const ast::CallExpression* createTextureSampleLevel(const ast::CallExpression* expr, + NewBindingSymbols syms) { const ast::Expression* plane_0_binding_param = ctx.Clone(expr->args[0]); if (expr->args.Length() != 3) { @@ -391,9 +423,7 @@ struct MultiplanarExternalTexture::State { b.Param("params", b.ty.type_name(params_struct_sym)), }, b.ty.vec4(b.ty.f32()), - utils::Vector{ - createTexFnExtStatementList(sem::BuiltinType::kTextureSampleLevel), - }); + buildTextureBuiltinBody(sem::BuiltinType::kTextureSampleLevel)); } const ast::IdentifierExpression* exp = b.Expr(texture_sample_external_sym); @@ -406,13 +436,60 @@ struct MultiplanarExternalTexture::State { }); } - /// Creates the textureLoadExternal function if needed and returns a call - /// expression to it. + /// Creates the textureSampleExternal function if needed and returns a call expression to it. + /// @param expr the call expression being transformed + /// @param syms the expanded symbols to be used in the new call + /// @returns a call expression to textureSampleExternal + const ast::CallExpression* createTextureSampleBaseClampToEdge(const ast::CallExpression* expr, + NewBindingSymbols syms) { + const ast::Expression* plane_0_binding_param = ctx.Clone(expr->args[0]); + + if (expr->args.Length() != 3) { + TINT_ICE(Transform, b.Diagnostics()) + << "expected textureSampleBaseClampToEdge call with a " + "texture_external to have 3 parameters, found " + << expr->args.Length() << " parameters"; + } + + // TextureSampleExternal calls the gammaCorrection function, so ensure it + // exists. + if (!gamma_correction_sym.IsValid()) { + createGammaCorrectionFn(); + } + + if (!texture_sample_external_sym.IsValid()) { + texture_sample_external_sym = b.Symbols().New("textureSampleExternal"); + + // Emit the textureSampleExternal function. + b.Func( + texture_sample_external_sym, + utils::Vector{ + b.Param("plane0", b.ty.sampled_texture(ast::TextureDimension::k2d, b.ty.f32())), + b.Param("plane1", b.ty.sampled_texture(ast::TextureDimension::k2d, b.ty.f32())), + b.Param("smp", b.ty.sampler(ast::SamplerKind::kSampler)), + b.Param("coord", b.ty.vec2(b.ty.f32())), + b.Param("params", b.ty.type_name(params_struct_sym)), + }, + b.ty.vec4(b.ty.f32()), + buildTextureBuiltinBody(sem::BuiltinType::kTextureSampleBaseClampToEdge)); + } + + const ast::IdentifierExpression* exp = b.Expr(texture_sample_external_sym); + return b.Call(exp, utils::Vector{ + plane_0_binding_param, + b.Expr(syms.plane_1), + ctx.Clone(expr->args[1]), + ctx.Clone(expr->args[2]), + b.Expr(syms.params), + }); + } + + /// Creates the textureLoadExternal function if needed and returns a call expression to it. /// @param expr the call expression being transformed /// @param syms the expanded symbols to be used in the new call /// @returns a call expression to textureLoadExternal - const ast::CallExpression* createTexLdExt(const ast::CallExpression* expr, - NewBindingSymbols syms) { + const ast::CallExpression* createTextureLoad(const ast::CallExpression* expr, + NewBindingSymbols syms) { const ast::Expression* plane_0_binding_param = ctx.Clone(expr->args[0]); if (expr->args.Length() != 2) { @@ -440,10 +517,8 @@ struct MultiplanarExternalTexture::State { b.Param("coord", b.ty.vec2(b.ty.i32())), b.Param("params", b.ty.type_name(params_struct_sym)), }, - b.ty.vec4(b.ty.f32()), - utils::Vector{ - createTexFnExtStatementList(sem::BuiltinType::kTextureLoad), - }); + b.ty.vec4(b.ty.f32()), // + buildTextureBuiltinBody(sem::BuiltinType::kTextureLoad)); } return b.Call(texture_load_external_sym, plane_0_binding_param, syms.plane_1, @@ -469,13 +544,11 @@ bool MultiplanarExternalTexture::ShouldRun(const Program* program, const DataMap return false; } -// Within this transform, an instance of a texture_external binding is unpacked -// into two texture_2d bindings representing two possible planes of a -// single texture and a uniform buffer binding representing a struct of -// parameters. Calls to textureLoad or textureSampleLevel that contain a -// texture_external parameter will be transformed into a newly generated version -// of the function, which can perform the desired operation on a single RGBA -// plane or on separate Y and UV planes. +// Within this transform, an instance of a texture_external binding is unpacked into two +// texture_2d bindings representing two possible planes of a single texture and a uniform +// buffer binding representing a struct of parameters. Calls to texture builtins that contain a +// texture_external parameter will be transformed into a newly generated version of the function, +// which can perform the desired operation on a single RGBA plane or on separate Y and UV planes. void MultiplanarExternalTexture::Run(CloneContext& ctx, const DataMap& inputs, DataMap&) const { auto* new_binding_points = inputs.Get(); diff --git a/src/tint/transform/multiplanar_external_texture_test.cc b/src/tint/transform/multiplanar_external_texture_test.cc index 79f9fddef0..778f7db578 100644 --- a/src/tint/transform/multiplanar_external_texture_test.cc +++ b/src/tint/transform/multiplanar_external_texture_test.cc @@ -49,9 +49,8 @@ fn f(ext_tex : texture_external) {} EXPECT_TRUE(ShouldRun(src)); } -// Running the transform without passing in data for the new bindings should -// result in an error. -TEST_F(MultiplanarExternalTextureTest, ErrorNoPassedData) { +// Running the transform without passing in data for the new bindings should result in an error. +TEST_F(MultiplanarExternalTextureTest, ErrorNoPassedData_SampleLevel) { auto* src = R"( @group(0) @binding(0) var s : sampler; @group(0) @binding(1) var ext_tex : texture_external; @@ -68,8 +67,26 @@ fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { EXPECT_EQ(expect, str(got)); } +// Running the transform without passing in data for the new bindings should result in an error. +TEST_F(MultiplanarExternalTextureTest, ErrorNoPassedData_SampleBaseClampToEdge) { + auto* src = R"( +@group(0) @binding(0) var s : sampler; +@group(0) @binding(1) var ext_tex : texture_external; + +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return textureSampleBaseClampToEdge(ext_tex, s, coord.xy); +} +)"; + auto* expect = + R"(error: missing new binding point data for tint::transform::MultiplanarExternalTexture)"; + + auto got = Run(src); + EXPECT_EQ(expect, str(got)); +} + // Running the transform with incorrect binding data should result in an error. -TEST_F(MultiplanarExternalTextureTest, ErrorIncorrectBindingPont) { +TEST_F(MultiplanarExternalTextureTest, ErrorIncorrectBindingPont_SampleLevel) { auto* src = R"( @group(0) @binding(0) var s : sampler; @group(0) @binding(1) var ext_tex : texture_external; @@ -91,6 +108,29 @@ fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { EXPECT_EQ(expect, str(got)); } +// Running the transform with incorrect binding data should result in an error. +TEST_F(MultiplanarExternalTextureTest, ErrorIncorrectBindingPont_SampleBaseClampToEdge) { + auto* src = R"( +@group(0) @binding(0) var s : sampler; +@group(0) @binding(1) var ext_tex : texture_external; + +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return textureSampleBaseClampToEdge(ext_tex, s, coord.xy); +} +)"; + + auto* expect = R"(error: missing new binding points for texture_external at binding {0,1})"; + + DataMap data; + // This bindings map specifies 0,0 as the location of the texture_external, + // which is incorrect. + data.Add( + MultiplanarExternalTexture::BindingsMap{{{0, 0}, {{0, 1}, {0, 2}}}}); + auto got = Run(src, data); + EXPECT_EQ(expect, str(got)); +} + // Tests that the transform works with a textureDimensions call. TEST_F(MultiplanarExternalTextureTest, Dimensions) { auto* src = R"( @@ -277,6 +317,88 @@ fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { EXPECT_EQ(expect, str(got)); } +// Test that the transform works with a textureSampleBaseClampToEdge call. +TEST_F(MultiplanarExternalTextureTest, BasicTextureSampleBaseClampToEdge) { + auto* src = R"( +@group(0) @binding(0) var s : sampler; +@group(0) @binding(1) var ext_tex : texture_external; + +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return textureSampleBaseClampToEdge(ext_tex, s, coord.xy); +} +)"; + + auto* expect = R"( +struct GammaTransferParams { + G : f32, + A : f32, + B : f32, + C : f32, + D : f32, + E : f32, + F : f32, + padding : u32, +} + +struct ExternalTextureParams { + numPlanes : u32, + doYuvToRgbConversionOnly : u32, + yuvToRgbConversionMatrix : mat3x4, + gammaDecodeParams : GammaTransferParams, + gammaEncodeParams : GammaTransferParams, + gamutConversionMatrix : mat3x3, +} + +@group(0) @binding(2) var ext_tex_plane_1 : texture_2d; + +@group(0) @binding(3) var ext_tex_params : ExternalTextureParams; + +@group(0) @binding(0) var s : sampler; + +@group(0) @binding(1) var ext_tex : texture_2d; + +fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { + let cond = (abs(v) < vec3(params.D)); + let t = (sign(v) * ((params.C * abs(v)) + params.F)); + let f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return select(f, t, cond); +} + +fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); + var color : vec3; + if ((params.numPlanes == 1u)) { + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params); +} +)"; + + DataMap data; + data.Add( + MultiplanarExternalTexture::BindingsMap{{{0, 1}, {{0, 2}, {0, 3}}}}); + auto got = Run(src, data); + EXPECT_EQ(expect, str(got)); +} + // Test that the transform works with a textureSampleLevel call. TEST_F(MultiplanarExternalTextureTest, BasicTextureSampleLevel_OutOfOrder) { auto* src = R"( @@ -353,6 +475,88 @@ fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { EXPECT_EQ(expect, str(got)); } +// Test that the transform works with a textureSampleBaseClampToEdge call. +TEST_F(MultiplanarExternalTextureTest, BasicTextureSampleBaseClampToEdge_OutOfOrder) { + auto* src = R"( +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return textureSampleBaseClampToEdge(ext_tex, s, coord.xy); +} + +@group(0) @binding(1) var ext_tex : texture_external; +@group(0) @binding(0) var s : sampler; +)"; + + auto* expect = R"( +struct GammaTransferParams { + G : f32, + A : f32, + B : f32, + C : f32, + D : f32, + E : f32, + F : f32, + padding : u32, +} + +struct ExternalTextureParams { + numPlanes : u32, + doYuvToRgbConversionOnly : u32, + yuvToRgbConversionMatrix : mat3x4, + gammaDecodeParams : GammaTransferParams, + gammaEncodeParams : GammaTransferParams, + gamutConversionMatrix : mat3x3, +} + +@group(0) @binding(2) var ext_tex_plane_1 : texture_2d; + +@group(0) @binding(3) var ext_tex_params : ExternalTextureParams; + +fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { + let cond = (abs(v) < vec3(params.D)); + let t = (sign(v) * ((params.C * abs(v)) + params.F)); + let f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return select(f, t, cond); +} + +fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); + var color : vec3; + if ((params.numPlanes == 1u)) { + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params); +} + +@group(0) @binding(1) var ext_tex : texture_2d; + +@group(0) @binding(0) var s : sampler; +)"; + + DataMap data; + data.Add( + MultiplanarExternalTexture::BindingsMap{{{0, 1}, {{0, 2}, {0, 3}}}}); + auto got = Run(src, data); + EXPECT_EQ(expect, str(got)); +} + // Tests that the transform works with a textureLoad call. TEST_F(MultiplanarExternalTextureTest, BasicTextureLoad) { auto* src = R"( @@ -499,8 +703,7 @@ fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { EXPECT_EQ(expect, str(got)); } -// Tests that the transform works with both a textureSampleLevel and textureLoad -// call. +// Tests that the transform works with both a textureSampleLevel and textureLoad call. TEST_F(MultiplanarExternalTextureTest, TextureSampleAndTextureLoad) { auto* src = R"( @group(0) @binding(0) var s : sampler; @@ -591,8 +794,104 @@ fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { EXPECT_EQ(expect, str(got)); } -// Tests that the transform works with both a textureSampleLevel and textureLoad -// call. +// Tests that the transform works with both a textureSampleBaseClampToEdge and textureLoad call. +TEST_F(MultiplanarExternalTextureTest, TextureSampleBaseClampToEdgeAndTextureLoad) { + auto* src = R"( +@group(0) @binding(0) var s : sampler; +@group(0) @binding(1) var ext_tex : texture_external; + +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return textureSampleBaseClampToEdge(ext_tex, s, coord.xy) + textureLoad(ext_tex, vec2(1, 1)); +} +)"; + + auto* expect = R"( +struct GammaTransferParams { + G : f32, + A : f32, + B : f32, + C : f32, + D : f32, + E : f32, + F : f32, + padding : u32, +} + +struct ExternalTextureParams { + numPlanes : u32, + doYuvToRgbConversionOnly : u32, + yuvToRgbConversionMatrix : mat3x4, + gammaDecodeParams : GammaTransferParams, + gammaEncodeParams : GammaTransferParams, + gamutConversionMatrix : mat3x3, +} + +@group(0) @binding(2) var ext_tex_plane_1 : texture_2d; + +@group(0) @binding(3) var ext_tex_params : ExternalTextureParams; + +@group(0) @binding(0) var s : sampler; + +@group(0) @binding(1) var ext_tex : texture_2d; + +fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { + let cond = (abs(v) < vec3(params.D)); + let t = (sign(v) * ((params.C * abs(v)) + params.F)); + let f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return select(f, t, cond); +} + +fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); + var color : vec3; + if ((params.numPlanes == 1u)) { + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +fn textureLoadExternal(plane0 : texture_2d, plane1 : texture_2d, coord : vec2, params : ExternalTextureParams) -> vec4 { + var color : vec3; + if ((params.numPlanes == 1u)) { + color = textureLoad(plane0, coord, 0i).rgb; + } else { + color = (vec4(textureLoad(plane0, coord, 0i).r, textureLoad(plane1, coord, 0i).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return (textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params) + textureLoadExternal(ext_tex, ext_tex_plane_1, vec2(1, 1), ext_tex_params)); +} +)"; + + DataMap data; + data.Add( + MultiplanarExternalTexture::BindingsMap{{{0, 1}, {{0, 2}, {0, 3}}}}); + auto got = Run(src, data); + EXPECT_EQ(expect, str(got)); +} + +// Tests that the transform works with both a textureSampleLevel and textureLoad call. TEST_F(MultiplanarExternalTextureTest, TextureSampleAndTextureLoad_OutOfOrder) { auto* src = R"( @fragment @@ -683,6 +982,103 @@ fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { EXPECT_EQ(expect, str(got)); } +// Tests that the transform works with both a textureSampleBaseClampToEdge and textureLoad call. +TEST_F(MultiplanarExternalTextureTest, TextureSampleBaseClampToEdgeAndTextureLoad_OutOfOrder) { + auto* src = R"( +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return textureSampleBaseClampToEdge(ext_tex, s, coord.xy) + textureLoad(ext_tex, vec2(1, 1)); +} + +@group(0) @binding(0) var s : sampler; +@group(0) @binding(1) var ext_tex : texture_external; +)"; + + auto* expect = R"( +struct GammaTransferParams { + G : f32, + A : f32, + B : f32, + C : f32, + D : f32, + E : f32, + F : f32, + padding : u32, +} + +struct ExternalTextureParams { + numPlanes : u32, + doYuvToRgbConversionOnly : u32, + yuvToRgbConversionMatrix : mat3x4, + gammaDecodeParams : GammaTransferParams, + gammaEncodeParams : GammaTransferParams, + gamutConversionMatrix : mat3x3, +} + +@group(0) @binding(2) var ext_tex_plane_1 : texture_2d; + +@group(0) @binding(3) var ext_tex_params : ExternalTextureParams; + +fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { + let cond = (abs(v) < vec3(params.D)); + let t = (sign(v) * ((params.C * abs(v)) + params.F)); + let f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return select(f, t, cond); +} + +fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); + var color : vec3; + if ((params.numPlanes == 1u)) { + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +fn textureLoadExternal(plane0 : texture_2d, plane1 : texture_2d, coord : vec2, params : ExternalTextureParams) -> vec4 { + var color : vec3; + if ((params.numPlanes == 1u)) { + color = textureLoad(plane0, coord, 0i).rgb; + } else { + color = (vec4(textureLoad(plane0, coord, 0i).r, textureLoad(plane1, coord, 0i).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return (textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params) + textureLoadExternal(ext_tex, ext_tex_plane_1, vec2(1, 1), ext_tex_params)); +} + +@group(0) @binding(0) var s : sampler; + +@group(0) @binding(1) var ext_tex : texture_2d; +)"; + + DataMap data; + data.Add( + MultiplanarExternalTexture::BindingsMap{{{0, 1}, {{0, 2}, {0, 3}}}}); + auto got = Run(src, data); + EXPECT_EQ(expect, str(got)); +} + // Tests that the transform works with many instances of texture_external. TEST_F(MultiplanarExternalTextureTest, ManyTextureSampleLevel) { auto* src = R"( @@ -784,12 +1180,122 @@ fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { EXPECT_EQ(expect, str(got)); } +// Tests that the transform works with many instances of texture_external. +TEST_F(MultiplanarExternalTextureTest, ManyTextureSampleBaseClampToEdge) { + auto* src = R"( +@group(0) @binding(0) var s : sampler; +@group(0) @binding(1) var ext_tex : texture_external; +@group(0) @binding(2) var ext_tex_1 : texture_external; +@group(0) @binding(3) var ext_tex_2 : texture_external; +@group(1) @binding(0) var ext_tex_3 : texture_external; + +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return textureSampleBaseClampToEdge(ext_tex, s, coord.xy) + + textureSampleBaseClampToEdge(ext_tex_1, s, coord.xy) + + textureSampleBaseClampToEdge(ext_tex_2, s, coord.xy) + + textureSampleBaseClampToEdge(ext_tex_3, s, coord.xy); +} +)"; + + auto* expect = R"( +struct GammaTransferParams { + G : f32, + A : f32, + B : f32, + C : f32, + D : f32, + E : f32, + F : f32, + padding : u32, +} + +struct ExternalTextureParams { + numPlanes : u32, + doYuvToRgbConversionOnly : u32, + yuvToRgbConversionMatrix : mat3x4, + gammaDecodeParams : GammaTransferParams, + gammaEncodeParams : GammaTransferParams, + gamutConversionMatrix : mat3x3, +} + +@group(0) @binding(4) var ext_tex_plane_1 : texture_2d; + +@group(0) @binding(5) var ext_tex_params : ExternalTextureParams; + +@group(0) @binding(6) var ext_tex_plane_1_1 : texture_2d; + +@group(0) @binding(7) var ext_tex_params_1 : ExternalTextureParams; + +@group(0) @binding(8) var ext_tex_plane_1_2 : texture_2d; + +@group(0) @binding(9) var ext_tex_params_2 : ExternalTextureParams; + +@group(1) @binding(1) var ext_tex_plane_1_3 : texture_2d; + +@group(1) @binding(2) var ext_tex_params_3 : ExternalTextureParams; + +@group(0) @binding(0) var s : sampler; + +@group(0) @binding(1) var ext_tex : texture_2d; + +@group(0) @binding(2) var ext_tex_1 : texture_2d; + +@group(0) @binding(3) var ext_tex_2 : texture_2d; + +@group(1) @binding(0) var ext_tex_3 : texture_2d; + +fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { + let cond = (abs(v) < vec3(params.D)); + let t = (sign(v) * ((params.C * abs(v)) + params.F)); + let f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return select(f, t, cond); +} + +fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); + var color : vec3; + if ((params.numPlanes == 1u)) { + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +@fragment +fn main(@builtin(position) coord : vec4) -> @location(0) vec4 { + return (((textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params) + textureSampleExternal(ext_tex_1, ext_tex_plane_1_1, s, coord.xy, ext_tex_params_1)) + textureSampleExternal(ext_tex_2, ext_tex_plane_1_2, s, coord.xy, ext_tex_params_2)) + textureSampleExternal(ext_tex_3, ext_tex_plane_1_3, s, coord.xy, ext_tex_params_3)); +} +)"; + + DataMap data; + data.Add(MultiplanarExternalTexture::BindingsMap{ + {{0, 1}, {{0, 4}, {0, 5}}}, + {{0, 2}, {{0, 6}, {0, 7}}}, + {{0, 3}, {{0, 8}, {0, 9}}}, + {{1, 0}, {{1, 1}, {1, 2}}}, + }); + auto got = Run(src, data); + EXPECT_EQ(expect, str(got)); +} + // Tests that the texture_external passed as a function parameter produces the // correct output. TEST_F(MultiplanarExternalTextureTest, ExternalTexturePassedAsParam) { auto* src = R"( fn f(t : texture_external, s : sampler) { - textureSampleLevel(t, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t, s, vec2(1.0, 2.0)); } @group(0) @binding(0) var ext_tex : texture_external; @@ -834,11 +1340,17 @@ fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { } fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); var color : vec3; if ((params.numPlanes == 1u)) { - color = textureSampleLevel(plane0, smp, coord, 0.0f).rgb; + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; } else { - color = (vec4(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); } if ((params.doYuvToRgbConversionOnly == 0u)) { color = gammaCorrection(color, params.gammaDecodeParams); @@ -879,7 +1391,7 @@ fn main() { } fn f(t : texture_external, s : sampler) { - textureSampleLevel(t, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t, s, vec2(1.0, 2.0)); } @group(0) @binding(0) var ext_tex : texture_external; @@ -924,11 +1436,17 @@ fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { } fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); var color : vec3; if ((params.numPlanes == 1u)) { - color = textureSampleLevel(plane0, smp, coord, 0.0f).rgb; + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; } else { - color = (vec4(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); } if ((params.doYuvToRgbConversionOnly == 0u)) { color = gammaCorrection(color, params.gammaDecodeParams); @@ -959,7 +1477,7 @@ fn f(t : texture_2d, ext_tex_plane_1_1 : texture_2d, ext_tex_params_1 TEST_F(MultiplanarExternalTextureTest, ExternalTexturePassedAsSecondParam) { auto* src = R"( fn f(s : sampler, t : texture_external) { - textureSampleLevel(t, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t, s, vec2(1.0, 2.0)); } @group(0) @binding(0) var ext_tex : texture_external; @@ -1004,11 +1522,17 @@ fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { } fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); var color : vec3; if ((params.numPlanes == 1u)) { - color = textureSampleLevel(plane0, smp, coord, 0.0f).rgb; + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; } else { - color = (vec4(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); } if ((params.doYuvToRgbConversionOnly == 0u)) { color = gammaCorrection(color, params.gammaDecodeParams); @@ -1044,8 +1568,8 @@ fn main() { TEST_F(MultiplanarExternalTextureTest, ExternalTexturePassedAsParamMultiple) { auto* src = R"( fn f(t : texture_external, s : sampler, t2 : texture_external) { - textureSampleLevel(t, s, vec2(1.0, 2.0)); - textureSampleLevel(t2, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t2, s, vec2(1.0, 2.0)); } @group(0) @binding(0) var ext_tex : texture_external; @@ -1095,11 +1619,17 @@ fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { } fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); var color : vec3; if ((params.numPlanes == 1u)) { - color = textureSampleLevel(plane0, smp, coord, 0.0f).rgb; + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; } else { - color = (vec4(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); } if ((params.doYuvToRgbConversionOnly == 0u)) { color = gammaCorrection(color, params.gammaDecodeParams); @@ -1144,8 +1674,8 @@ fn main() { } fn f(t : texture_external, s : sampler, t2 : texture_external) { - textureSampleLevel(t, s, vec2(1.0, 2.0)); - textureSampleLevel(t2, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t2, s, vec2(1.0, 2.0)); } @group(0) @binding(0) var ext_tex : texture_external; @@ -1196,11 +1726,17 @@ fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { } fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); var color : vec3; if ((params.numPlanes == 1u)) { - color = textureSampleLevel(plane0, smp, coord, 0.0f).rgb; + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; } else { - color = (vec4(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); } if ((params.doYuvToRgbConversionOnly == 0u)) { color = gammaCorrection(color, params.gammaDecodeParams); @@ -1235,7 +1771,7 @@ fn f(t : texture_2d, ext_tex_plane_1_2 : texture_2d, ext_tex_params_2 TEST_F(MultiplanarExternalTextureTest, ExternalTexturePassedAsParamNested) { auto* src = R"( fn nested(t : texture_external, s : sampler) { - textureSampleLevel(t, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t, s, vec2(1.0, 2.0)); } fn f(t : texture_external, s : sampler) { @@ -1284,11 +1820,17 @@ fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { } fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); var color : vec3; if ((params.numPlanes == 1u)) { - color = textureSampleLevel(plane0, smp, coord, 0.0f).rgb; + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; } else { - color = (vec4(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); } if ((params.doYuvToRgbConversionOnly == 0u)) { color = gammaCorrection(color, params.gammaDecodeParams); @@ -1323,12 +1865,12 @@ fn main() { EXPECT_EQ(expect, str(got)); } -// Tests that the texture_external passed to as a parameter to multiple -// functions produces the correct output. +// Tests that the texture_external passed to as a parameter to multiple functions produces the +// correct output. TEST_F(MultiplanarExternalTextureTest, ExternalTexturePassedAsParamNested_OutOfOrder) { auto* src = R"( fn nested(t : texture_external, s : sampler) { - textureSampleLevel(t, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t, s, vec2(1.0, 2.0)); } fn f(t : texture_external, s : sampler) { @@ -1377,11 +1919,17 @@ fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { } fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); var color : vec3; if ((params.numPlanes == 1u)) { - color = textureSampleLevel(plane0, smp, coord, 0.0f).rgb; + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; } else { - color = (vec4(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); } if ((params.doYuvToRgbConversionOnly == 0u)) { color = gammaCorrection(color, params.gammaDecodeParams); @@ -1464,7 +2012,7 @@ TEST_F(MultiplanarExternalTextureTest, ExternalTextureAlias) { type ET = texture_external; fn f(t : ET, s : sampler) { - textureSampleLevel(t, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t, s, vec2(1.0, 2.0)); } @group(0) @binding(0) var ext_tex : ET; @@ -1511,11 +2059,17 @@ fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { } fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); var color : vec3; if ((params.numPlanes == 1u)) { - color = textureSampleLevel(plane0, smp, coord, 0.0f).rgb; + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; } else { - color = (vec4(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); } if ((params.doYuvToRgbConversionOnly == 0u)) { color = gammaCorrection(color, params.gammaDecodeParams); @@ -1555,7 +2109,7 @@ fn main() { } fn f(t : ET, s : sampler) { - textureSampleLevel(t, s, vec2(1.0, 2.0)); + textureSampleBaseClampToEdge(t, s, vec2(1.0, 2.0)); } @group(0) @binding(0) var ext_tex : ET; @@ -1602,11 +2156,17 @@ fn gammaCorrection(v : vec3, params : GammaTransferParams) -> vec3 { } fn textureSampleExternal(plane0 : texture_2d, plane1 : texture_2d, smp : sampler, coord : vec2, params : ExternalTextureParams) -> vec4 { + let plane0_dims = vec2(textureDimensions(plane0, 0)); + let plane0_half_texel = (vec2(0.5) / plane0_dims); + let plane0_clamped = clamp(coord, plane0_half_texel, (1 - plane0_half_texel)); + let plane1_dims = vec2(textureDimensions(plane1, 0)); + let plane1_half_texel = (vec2(0.5) / plane1_dims); + let plane1_clamped = clamp(coord, plane1_half_texel, (1 - plane1_half_texel)); var color : vec3; if ((params.numPlanes == 1u)) { - color = textureSampleLevel(plane0, smp, coord, 0.0f).rgb; + color = textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).rgb; } else { - color = (vec4(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + color = (vec4(textureSampleLevel(plane0, smp, plane0_clamped, 0.0f).r, textureSampleLevel(plane1, smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); } if ((params.doYuvToRgbConversionOnly == 0u)) { color = gammaCorrection(color, params.gammaDecodeParams); diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc index 3cab83df96..16513a9479 100644 --- a/src/tint/writer/glsl/generator_impl.cc +++ b/src/tint/writer/glsl/generator_impl.cc @@ -192,6 +192,7 @@ SanitizedResult Sanitize(const Program* in, polyfills.first_trailing_bit = true; polyfills.insert_bits = transform::BuiltinPolyfill::Level::kClampParameters; polyfills.saturate = true; + polyfills.texture_sample_base_clamp_to_edge_2d_f32 = true; data.Add(polyfills); manager.Add(); } diff --git a/src/tint/writer/hlsl/generator_impl.cc b/src/tint/writer/hlsl/generator_impl.cc index fb774c0aba..48090d3e8f 100644 --- a/src/tint/writer/hlsl/generator_impl.cc +++ b/src/tint/writer/hlsl/generator_impl.cc @@ -175,6 +175,7 @@ SanitizedResult Sanitize(const Program* in, const Options& options) { polyfills.first_leading_bit = true; polyfills.first_trailing_bit = true; polyfills.insert_bits = transform::BuiltinPolyfill::Level::kFull; + polyfills.texture_sample_base_clamp_to_edge_2d_f32 = true; data.Add(polyfills); manager.Add(); } diff --git a/src/tint/writer/msl/generator_impl.cc b/src/tint/writer/msl/generator_impl.cc index 37083235c1..9d07aa89b8 100644 --- a/src/tint/writer/msl/generator_impl.cc +++ b/src/tint/writer/msl/generator_impl.cc @@ -172,6 +172,7 @@ SanitizedResult Sanitize(const Program* in, const Options& options) { polyfills.first_leading_bit = true; polyfills.first_trailing_bit = true; polyfills.insert_bits = transform::BuiltinPolyfill::Level::kClampParameters; + polyfills.texture_sample_base_clamp_to_edge_2d_f32 = true; data.Add(polyfills); manager.Add(); } diff --git a/src/tint/writer/spirv/generator_impl.cc b/src/tint/writer/spirv/generator_impl.cc index bf92bf94b4..e7ea44830b 100644 --- a/src/tint/writer/spirv/generator_impl.cc +++ b/src/tint/writer/spirv/generator_impl.cc @@ -58,6 +58,7 @@ SanitizedResult Sanitize(const Program* in, const Options& options) { polyfills.first_trailing_bit = true; polyfills.insert_bits = transform::BuiltinPolyfill::Level::kClampParameters; polyfills.saturate = true; + polyfills.texture_sample_base_clamp_to_edge_2d_f32 = true; data.Add(polyfills); manager.Add(); } diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl new file mode 100644 index 0000000000..55110ea54b --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl @@ -0,0 +1,45 @@ +// Copyright 2022 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +@group(1) @binding(0) var arg_0: texture_external; +@group(1) @binding(1) var arg_1: sampler; + +// fn textureSampleBaseClampToEdge(texture: texture_external, sampler: sampler, coords: vec2) -> vec4 +fn textureSampleBaseClampToEdge_7c04e6() { + var res: vec4 = textureSampleBaseClampToEdge(arg_0, arg_1, vec2()); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + textureSampleBaseClampToEdge_7c04e6(); + return vec4(); +} + +@fragment +fn fragment_main() { + textureSampleBaseClampToEdge_7c04e6(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureSampleBaseClampToEdge_7c04e6(); +} diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..2dbd2e8803 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl @@ -0,0 +1,122 @@ +struct GammaTransferParams { + float G; + float A; + float B; + float C; + float D; + float E; + float F; + uint padding; +}; +struct ExternalTextureParams { + uint numPlanes; + uint doYuvToRgbConversionOnly; + float3x4 yuvToRgbConversionMatrix; + GammaTransferParams gammaDecodeParams; + GammaTransferParams gammaEncodeParams; + float3x3 gamutConversionMatrix; +}; + +Texture2D ext_tex_plane_1 : register(t2, space1); +cbuffer cbuffer_ext_tex_params : register(b3, space1) { + uint4 ext_tex_params[11]; +}; +Texture2D arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +float3 gammaCorrection(float3 v, GammaTransferParams params) { + const bool3 cond = (abs(v) < float3((params.D).xxx)); + const float3 t = (sign(v) * ((params.C * abs(v)) + params.F)); + const float3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), float3((params.G).xxx)) + params.E)); + return (cond ? t : f); +} + +float4 textureSampleExternal(Texture2D plane0, Texture2D plane1, SamplerState smp, float2 coord, ExternalTextureParams params) { + int3 tint_tmp; + plane0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z); + const float2 plane0_dims = float2(tint_tmp.xy); + const float2 plane0_half_texel = ((0.5f).xx / plane0_dims); + const float2 plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + int3 tint_tmp_1; + plane1.GetDimensions(0, tint_tmp_1.x, tint_tmp_1.y, tint_tmp_1.z); + const float2 plane1_dims = float2(tint_tmp_1.xy); + const float2 plane1_half_texel = ((0.5f).xx / plane1_dims); + const float2 plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + float3 color = float3(0.0f, 0.0f, 0.0f); + if ((params.numPlanes == 1u)) { + color = plane0.SampleLevel(smp, plane0_clamped, 0.0f).rgb; + } else { + color = mul(params.yuvToRgbConversionMatrix, float4(plane0.SampleLevel(smp, plane0_clamped, 0.0f).r, plane1.SampleLevel(smp, plane1_clamped, 0.0f).rg, 1.0f)); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = mul(color, params.gamutConversionMatrix); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return float4(color, 1.0f); +} + +float3x4 tint_symbol_3(uint4 buffer[11], uint offset) { + const uint scalar_offset = ((offset + 0u)) / 4; + const uint scalar_offset_1 = ((offset + 16u)) / 4; + const uint scalar_offset_2 = ((offset + 32u)) / 4; + return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4])); +} + +GammaTransferParams tint_symbol_5(uint4 buffer[11], uint offset) { + const uint scalar_offset_3 = ((offset + 0u)) / 4; + const uint scalar_offset_4 = ((offset + 4u)) / 4; + const uint scalar_offset_5 = ((offset + 8u)) / 4; + const uint scalar_offset_6 = ((offset + 12u)) / 4; + const uint scalar_offset_7 = ((offset + 16u)) / 4; + const uint scalar_offset_8 = ((offset + 20u)) / 4; + const uint scalar_offset_9 = ((offset + 24u)) / 4; + const uint scalar_offset_10 = ((offset + 28u)) / 4; + const GammaTransferParams tint_symbol_9 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]}; + return tint_symbol_9; +} + +float3x3 tint_symbol_7(uint4 buffer[11], uint offset) { + const uint scalar_offset_11 = ((offset + 0u)) / 4; + const uint scalar_offset_12 = ((offset + 16u)) / 4; + const uint scalar_offset_13 = ((offset + 32u)) / 4; + return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz)); +} + +ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) { + const uint scalar_offset_14 = ((offset + 0u)) / 4; + const uint scalar_offset_15 = ((offset + 4u)) / 4; + const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], buffer[scalar_offset_15 / 4][scalar_offset_15 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))}; + return tint_symbol_10; +} + +void textureSampleBaseClampToEdge_7c04e6() { + float4 res = textureSampleExternal(arg_0, ext_tex_plane_1, arg_1, (0.0f).xx, tint_symbol_1(ext_tex_params, 0u)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureSampleBaseClampToEdge_7c04e6(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + textureSampleBaseClampToEdge_7c04e6(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureSampleBaseClampToEdge_7c04e6(); + return; +} diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..2dbd2e8803 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl @@ -0,0 +1,122 @@ +struct GammaTransferParams { + float G; + float A; + float B; + float C; + float D; + float E; + float F; + uint padding; +}; +struct ExternalTextureParams { + uint numPlanes; + uint doYuvToRgbConversionOnly; + float3x4 yuvToRgbConversionMatrix; + GammaTransferParams gammaDecodeParams; + GammaTransferParams gammaEncodeParams; + float3x3 gamutConversionMatrix; +}; + +Texture2D ext_tex_plane_1 : register(t2, space1); +cbuffer cbuffer_ext_tex_params : register(b3, space1) { + uint4 ext_tex_params[11]; +}; +Texture2D arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +float3 gammaCorrection(float3 v, GammaTransferParams params) { + const bool3 cond = (abs(v) < float3((params.D).xxx)); + const float3 t = (sign(v) * ((params.C * abs(v)) + params.F)); + const float3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), float3((params.G).xxx)) + params.E)); + return (cond ? t : f); +} + +float4 textureSampleExternal(Texture2D plane0, Texture2D plane1, SamplerState smp, float2 coord, ExternalTextureParams params) { + int3 tint_tmp; + plane0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z); + const float2 plane0_dims = float2(tint_tmp.xy); + const float2 plane0_half_texel = ((0.5f).xx / plane0_dims); + const float2 plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + int3 tint_tmp_1; + plane1.GetDimensions(0, tint_tmp_1.x, tint_tmp_1.y, tint_tmp_1.z); + const float2 plane1_dims = float2(tint_tmp_1.xy); + const float2 plane1_half_texel = ((0.5f).xx / plane1_dims); + const float2 plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + float3 color = float3(0.0f, 0.0f, 0.0f); + if ((params.numPlanes == 1u)) { + color = plane0.SampleLevel(smp, plane0_clamped, 0.0f).rgb; + } else { + color = mul(params.yuvToRgbConversionMatrix, float4(plane0.SampleLevel(smp, plane0_clamped, 0.0f).r, plane1.SampleLevel(smp, plane1_clamped, 0.0f).rg, 1.0f)); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = mul(color, params.gamutConversionMatrix); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return float4(color, 1.0f); +} + +float3x4 tint_symbol_3(uint4 buffer[11], uint offset) { + const uint scalar_offset = ((offset + 0u)) / 4; + const uint scalar_offset_1 = ((offset + 16u)) / 4; + const uint scalar_offset_2 = ((offset + 32u)) / 4; + return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4])); +} + +GammaTransferParams tint_symbol_5(uint4 buffer[11], uint offset) { + const uint scalar_offset_3 = ((offset + 0u)) / 4; + const uint scalar_offset_4 = ((offset + 4u)) / 4; + const uint scalar_offset_5 = ((offset + 8u)) / 4; + const uint scalar_offset_6 = ((offset + 12u)) / 4; + const uint scalar_offset_7 = ((offset + 16u)) / 4; + const uint scalar_offset_8 = ((offset + 20u)) / 4; + const uint scalar_offset_9 = ((offset + 24u)) / 4; + const uint scalar_offset_10 = ((offset + 28u)) / 4; + const GammaTransferParams tint_symbol_9 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]}; + return tint_symbol_9; +} + +float3x3 tint_symbol_7(uint4 buffer[11], uint offset) { + const uint scalar_offset_11 = ((offset + 0u)) / 4; + const uint scalar_offset_12 = ((offset + 16u)) / 4; + const uint scalar_offset_13 = ((offset + 32u)) / 4; + return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz)); +} + +ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) { + const uint scalar_offset_14 = ((offset + 0u)) / 4; + const uint scalar_offset_15 = ((offset + 4u)) / 4; + const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], buffer[scalar_offset_15 / 4][scalar_offset_15 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))}; + return tint_symbol_10; +} + +void textureSampleBaseClampToEdge_7c04e6() { + float4 res = textureSampleExternal(arg_0, ext_tex_plane_1, arg_1, (0.0f).xx, tint_symbol_1(ext_tex_params, 0u)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureSampleBaseClampToEdge_7c04e6(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + textureSampleBaseClampToEdge_7c04e6(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureSampleBaseClampToEdge_7c04e6(); + return; +} diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl new file mode 100644 index 0000000000..4d4b0ee4a6 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl @@ -0,0 +1,220 @@ +#version 310 es + +struct GammaTransferParams { + float G; + float A; + float B; + float C; + float D; + float E; + float F; + uint padding; +}; + +struct ExternalTextureParams { + uint numPlanes; + uint doYuvToRgbConversionOnly; + mat3x4 yuvToRgbConversionMatrix; + GammaTransferParams gammaDecodeParams; + GammaTransferParams gammaEncodeParams; + mat3 gamutConversionMatrix; +}; + +layout(binding = 3, std140) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; +} ext_tex_params; + +vec3 gammaCorrection(vec3 v, GammaTransferParams params) { + bvec3 cond = lessThan(abs(v), vec3(params.D)); + vec3 t = (sign(v) * ((params.C * abs(v)) + params.F)); + vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return mix(f, t, cond); +} + + +vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) { + vec2 plane0_dims = vec2(textureSize(plane0_1, 0)); + vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims); + vec2 plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + vec2 plane1_dims = vec2(textureSize(plane1_1, 0)); + vec2 plane1_half_texel = (vec2(0.5f) / plane1_dims); + vec2 plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + vec3 color = vec3(0.0f, 0.0f, 0.0f); + if ((params.numPlanes == 1u)) { + color = textureLod(plane0_smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureLod(plane0_smp, plane0_clamped, 0.0f).r, textureLod(plane1_smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D ext_tex_plane_1_1; +uniform highp sampler2D arg_0_arg_1; +uniform highp sampler2D ext_tex_plane_1_arg_1; +void textureSampleBaseClampToEdge_7c04e6() { + vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(0.0f), ext_tex_params.inner); +} + +vec4 vertex_main() { + textureSampleBaseClampToEdge_7c04e6(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + +struct GammaTransferParams { + float G; + float A; + float B; + float C; + float D; + float E; + float F; + uint padding; +}; + +struct ExternalTextureParams { + uint numPlanes; + uint doYuvToRgbConversionOnly; + mat3x4 yuvToRgbConversionMatrix; + GammaTransferParams gammaDecodeParams; + GammaTransferParams gammaEncodeParams; + mat3 gamutConversionMatrix; +}; + +layout(binding = 3, std140) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; +} ext_tex_params; + +vec3 gammaCorrection(vec3 v, GammaTransferParams params) { + bvec3 cond = lessThan(abs(v), vec3(params.D)); + vec3 t = (sign(v) * ((params.C * abs(v)) + params.F)); + vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return mix(f, t, cond); +} + + +vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) { + vec2 plane0_dims = vec2(textureSize(plane0_1, 0)); + vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims); + vec2 plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + vec2 plane1_dims = vec2(textureSize(plane1_1, 0)); + vec2 plane1_half_texel = (vec2(0.5f) / plane1_dims); + vec2 plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + vec3 color = vec3(0.0f, 0.0f, 0.0f); + if ((params.numPlanes == 1u)) { + color = textureLod(plane0_smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureLod(plane0_smp, plane0_clamped, 0.0f).r, textureLod(plane1_smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D ext_tex_plane_1_1; +uniform highp sampler2D arg_0_arg_1; +uniform highp sampler2D ext_tex_plane_1_arg_1; +void textureSampleBaseClampToEdge_7c04e6() { + vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(0.0f), ext_tex_params.inner); +} + +void fragment_main() { + textureSampleBaseClampToEdge_7c04e6(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +struct GammaTransferParams { + float G; + float A; + float B; + float C; + float D; + float E; + float F; + uint padding; +}; + +struct ExternalTextureParams { + uint numPlanes; + uint doYuvToRgbConversionOnly; + mat3x4 yuvToRgbConversionMatrix; + GammaTransferParams gammaDecodeParams; + GammaTransferParams gammaEncodeParams; + mat3 gamutConversionMatrix; +}; + +layout(binding = 3, std140) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; +} ext_tex_params; + +vec3 gammaCorrection(vec3 v, GammaTransferParams params) { + bvec3 cond = lessThan(abs(v), vec3(params.D)); + vec3 t = (sign(v) * ((params.C * abs(v)) + params.F)); + vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return mix(f, t, cond); +} + + +vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) { + vec2 plane0_dims = vec2(textureSize(plane0_1, 0)); + vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims); + vec2 plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + vec2 plane1_dims = vec2(textureSize(plane1_1, 0)); + vec2 plane1_half_texel = (vec2(0.5f) / plane1_dims); + vec2 plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + vec3 color = vec3(0.0f, 0.0f, 0.0f); + if ((params.numPlanes == 1u)) { + color = textureLod(plane0_smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureLod(plane0_smp, plane0_clamped, 0.0f).r, textureLod(plane1_smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D ext_tex_plane_1_1; +uniform highp sampler2D arg_0_arg_1; +uniform highp sampler2D ext_tex_plane_1_arg_1; +void textureSampleBaseClampToEdge_7c04e6() { + vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(0.0f), ext_tex_params.inner); +} + +void compute_main() { + textureSampleBaseClampToEdge_7c04e6(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl new file mode 100644 index 0000000000..03793756dc --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl @@ -0,0 +1,95 @@ +#include + +using namespace metal; + +template +struct tint_array { + const constant T& operator[](size_t i) const constant { return elements[i]; } + device T& operator[](size_t i) device { return elements[i]; } + const device T& operator[](size_t i) const device { return elements[i]; } + thread T& operator[](size_t i) thread { return elements[i]; } + const thread T& operator[](size_t i) const thread { return elements[i]; } + threadgroup T& operator[](size_t i) threadgroup { return elements[i]; } + const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; } + T elements[N]; +}; + +struct GammaTransferParams { + /* 0x0000 */ float G; + /* 0x0004 */ float A; + /* 0x0008 */ float B; + /* 0x000c */ float C; + /* 0x0010 */ float D; + /* 0x0014 */ float E; + /* 0x0018 */ float F; + /* 0x001c */ uint padding; +}; + +struct ExternalTextureParams { + /* 0x0000 */ uint numPlanes; + /* 0x0004 */ uint doYuvToRgbConversionOnly; + /* 0x0008 */ tint_array tint_pad; + /* 0x0010 */ float3x4 yuvToRgbConversionMatrix; + /* 0x0040 */ GammaTransferParams gammaDecodeParams; + /* 0x0060 */ GammaTransferParams gammaEncodeParams; + /* 0x0080 */ float3x3 gamutConversionMatrix; +}; + +float3 gammaCorrection(float3 v, GammaTransferParams params) { + bool3 const cond = (fabs(v) < float3(params.D)); + float3 const t = (sign(v) * ((params.C * fabs(v)) + params.F)); + float3 const f = (sign(v) * (pow(((params.A * fabs(v)) + params.B), float3(params.G)) + params.E)); + return select(f, t, cond); +} + +float4 textureSampleExternal(texture2d plane0, texture2d plane1, sampler smp, float2 coord, ExternalTextureParams params) { + float2 const plane0_dims = float2(int2(plane0.get_width(0), plane0.get_height(0))); + float2 const plane0_half_texel = (float2(0.5f) / plane0_dims); + float2 const plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + float2 const plane1_dims = float2(int2(plane1.get_width(0), plane1.get_height(0))); + float2 const plane1_half_texel = (float2(0.5f) / plane1_dims); + float2 const plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + float3 color = 0.0f; + if ((params.numPlanes == 1u)) { + color = float4(plane0.sample(smp, plane0_clamped, level(0.0f))).rgb; + } else { + color = (float4(plane0.sample(smp, plane0_clamped, level(0.0f))[0], float4(plane1.sample(smp, plane1_clamped, level(0.0f))).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return float4(color, 1.0f); +} + +void textureSampleBaseClampToEdge_7c04e6(texture2d tint_symbol_1, texture2d tint_symbol_2, sampler tint_symbol_3, const constant ExternalTextureParams* const tint_symbol_4) { + float4 res = textureSampleExternal(tint_symbol_1, tint_symbol_2, tint_symbol_3, float2(0.0f), *(tint_symbol_4)); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner(texture2d tint_symbol_5, texture2d tint_symbol_6, sampler tint_symbol_7, const constant ExternalTextureParams* const tint_symbol_8) { + textureSampleBaseClampToEdge_7c04e6(tint_symbol_5, tint_symbol_6, tint_symbol_7, tint_symbol_8); + return float4(0.0f); +} + +vertex tint_symbol vertex_main(texture2d tint_symbol_9 [[texture(0)]], texture2d tint_symbol_10 [[texture(1)]], sampler tint_symbol_11 [[sampler(0)]], const constant ExternalTextureParams* tint_symbol_12 [[buffer(2)]]) { + float4 const inner_result = vertex_main_inner(tint_symbol_9, tint_symbol_10, tint_symbol_11, tint_symbol_12); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main(texture2d tint_symbol_13 [[texture(0)]], texture2d tint_symbol_14 [[texture(1)]], sampler tint_symbol_15 [[sampler(0)]], const constant ExternalTextureParams* tint_symbol_16 [[buffer(2)]]) { + textureSampleBaseClampToEdge_7c04e6(tint_symbol_13, tint_symbol_14, tint_symbol_15, tint_symbol_16); + return; +} + +kernel void compute_main(texture2d tint_symbol_17 [[texture(0)]], texture2d tint_symbol_18 [[texture(1)]], sampler tint_symbol_19 [[sampler(0)]], const constant ExternalTextureParams* tint_symbol_20 [[buffer(2)]]) { + textureSampleBaseClampToEdge_7c04e6(tint_symbol_17, tint_symbol_18, tint_symbol_19, tint_symbol_20); + return; +} + diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm new file mode 100644 index 0000000000..ec3e59080c --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm @@ -0,0 +1,276 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 164 +; Schema: 0 + OpCapability Shader + OpCapability ImageQuery + %31 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %ext_tex_plane_1 "ext_tex_plane_1" + OpName %ext_tex_params_block "ext_tex_params_block" + OpMemberName %ext_tex_params_block 0 "inner" + OpName %ExternalTextureParams "ExternalTextureParams" + OpMemberName %ExternalTextureParams 0 "numPlanes" + OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly" + OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix" + OpMemberName %ExternalTextureParams 3 "gammaDecodeParams" + OpName %GammaTransferParams "GammaTransferParams" + OpMemberName %GammaTransferParams 0 "G" + OpMemberName %GammaTransferParams 1 "A" + OpMemberName %GammaTransferParams 2 "B" + OpMemberName %GammaTransferParams 3 "C" + OpMemberName %GammaTransferParams 4 "D" + OpMemberName %GammaTransferParams 5 "E" + OpMemberName %GammaTransferParams 6 "F" + OpMemberName %GammaTransferParams 7 "padding" + OpMemberName %ExternalTextureParams 4 "gammaEncodeParams" + OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix" + OpName %ext_tex_params "ext_tex_params" + OpName %arg_0 "arg_0" + OpName %arg_1 "arg_1" + OpName %gammaCorrection "gammaCorrection" + OpName %v "v" + OpName %params "params" + OpName %textureSampleExternal "textureSampleExternal" + OpName %plane0 "plane0" + OpName %plane1 "plane1" + OpName %smp "smp" + OpName %coord "coord" + OpName %params_0 "params" + OpName %color "color" + OpName %textureSampleBaseClampToEdge_7c04e6 "textureSampleBaseClampToEdge_7c04e6" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + OpDecorate %ext_tex_plane_1 DescriptorSet 1 + OpDecorate %ext_tex_plane_1 Binding 2 + OpDecorate %ext_tex_params_block Block + OpMemberDecorate %ext_tex_params_block 0 Offset 0 + OpMemberDecorate %ExternalTextureParams 0 Offset 0 + OpMemberDecorate %ExternalTextureParams 1 Offset 4 + OpMemberDecorate %ExternalTextureParams 2 Offset 16 + OpMemberDecorate %ExternalTextureParams 2 ColMajor + OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16 + OpMemberDecorate %ExternalTextureParams 3 Offset 64 + OpMemberDecorate %GammaTransferParams 0 Offset 0 + OpMemberDecorate %GammaTransferParams 1 Offset 4 + OpMemberDecorate %GammaTransferParams 2 Offset 8 + OpMemberDecorate %GammaTransferParams 3 Offset 12 + OpMemberDecorate %GammaTransferParams 4 Offset 16 + OpMemberDecorate %GammaTransferParams 5 Offset 20 + OpMemberDecorate %GammaTransferParams 6 Offset 24 + OpMemberDecorate %GammaTransferParams 7 Offset 28 + OpMemberDecorate %ExternalTextureParams 4 Offset 96 + OpMemberDecorate %ExternalTextureParams 5 Offset 128 + OpMemberDecorate %ExternalTextureParams 5 ColMajor + OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16 + OpDecorate %ext_tex_params NonWritable + OpDecorate %ext_tex_params DescriptorSet 1 + OpDecorate %ext_tex_params Binding 3 + OpDecorate %arg_0 DescriptorSet 1 + OpDecorate %arg_0 Binding 0 + OpDecorate %arg_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %11 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 +%ext_tex_plane_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %uint = OpTypeInt 32 0 +%mat3v4float = OpTypeMatrix %v4float 3 +%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint + %v3float = OpTypeVector %float 3 +%mat3v3float = OpTypeMatrix %v3float 3 +%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float +%ext_tex_params_block = OpTypeStruct %ExternalTextureParams +%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block +%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform + %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %24 = OpTypeSampler +%_ptr_UniformConstant_24 = OpTypePointer UniformConstant %24 + %arg_1 = OpVariable %_ptr_UniformConstant_24 UniformConstant + %25 = OpTypeFunction %v3float %v3float %GammaTransferParams + %bool = OpTypeBool + %v3bool = OpTypeVector %bool 3 +%_ptr_Function_v3float = OpTypePointer Function %v3float + %45 = OpConstantNull %v3float + %v2float = OpTypeVector %float 2 + %65 = OpTypeFunction %v4float %11 %11 %24 %v2float %ExternalTextureParams + %int = OpTypeInt 32 1 + %v2int = OpTypeVector %int 2 + %78 = OpConstantNull %int + %float_0_5 = OpConstant %float 0.5 + %80 = OpConstantComposite %v2float %float_0_5 %float_0_5 + %float_1 = OpConstant %float 1 +%_ptr_Function_v2float = OpTypePointer Function %v2float + %87 = OpConstantNull %v2float + %uint_1 = OpConstant %uint 1 + %104 = OpTypeSampledImage %11 + %119 = OpConstantNull %uint + %void = OpTypeVoid + %137 = OpTypeFunction %void + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams +%_ptr_Function_v4float = OpTypePointer Function %v4float + %151 = OpTypeFunction %v4float +%gammaCorrection = OpFunction %v3float None %25 + %v = OpFunctionParameter %v3float + %params = OpFunctionParameter %GammaTransferParams + %29 = OpLabel + %43 = OpVariable %_ptr_Function_v3float Function %45 + %55 = OpVariable %_ptr_Function_v3float Function %45 + %61 = OpVariable %_ptr_Function_v3float Function %45 + %30 = OpExtInst %v3float %31 FAbs %v + %32 = OpCompositeExtract %float %params 4 + %33 = OpCompositeConstruct %v3float %32 %32 %32 + %34 = OpFOrdLessThan %v3bool %30 %33 + %37 = OpExtInst %v3float %31 FSign %v + %38 = OpCompositeExtract %float %params 3 + %39 = OpExtInst %v3float %31 FAbs %v + %40 = OpVectorTimesScalar %v3float %39 %38 + %41 = OpCompositeExtract %float %params 6 + %46 = OpCompositeConstruct %v3float %41 %41 %41 + %42 = OpFAdd %v3float %40 %46 + %47 = OpFMul %v3float %37 %42 + %48 = OpExtInst %v3float %31 FSign %v + %50 = OpCompositeExtract %float %params 1 + %51 = OpExtInst %v3float %31 FAbs %v + %52 = OpVectorTimesScalar %v3float %51 %50 + %53 = OpCompositeExtract %float %params 2 + %56 = OpCompositeConstruct %v3float %53 %53 %53 + %54 = OpFAdd %v3float %52 %56 + %57 = OpCompositeExtract %float %params 0 + %58 = OpCompositeConstruct %v3float %57 %57 %57 + %49 = OpExtInst %v3float %31 Pow %54 %58 + %59 = OpCompositeExtract %float %params 5 + %62 = OpCompositeConstruct %v3float %59 %59 %59 + %60 = OpFAdd %v3float %49 %62 + %63 = OpFMul %v3float %48 %60 + %64 = OpSelect %v3float %34 %47 %63 + OpReturnValue %64 + OpFunctionEnd +%textureSampleExternal = OpFunction %v4float None %65 + %plane0 = OpFunctionParameter %11 + %plane1 = OpFunctionParameter %11 + %smp = OpFunctionParameter %24 + %coord = OpFunctionParameter %v2float + %params_0 = OpFunctionParameter %ExternalTextureParams + %73 = OpLabel + %85 = OpVariable %_ptr_Function_v2float Function %87 + %94 = OpVariable %_ptr_Function_v2float Function %87 + %color = OpVariable %_ptr_Function_v3float Function %45 + %75 = OpImageQuerySizeLod %v2int %plane0 %78 + %74 = OpConvertSToF %v2float %75 + %81 = OpFDiv %v2float %80 %74 + %88 = OpCompositeConstruct %v2float %float_1 %float_1 + %84 = OpFSub %v2float %88 %81 + %82 = OpExtInst %v2float %31 NClamp %coord %81 %84 + %90 = OpImageQuerySizeLod %v2int %plane1 %78 + %89 = OpConvertSToF %v2float %90 + %91 = OpFDiv %v2float %80 %89 + %95 = OpCompositeConstruct %v2float %float_1 %float_1 + %93 = OpFSub %v2float %95 %91 + %92 = OpExtInst %v2float %31 NClamp %coord %91 %93 + %97 = OpCompositeExtract %uint %params_0 0 + %99 = OpIEqual %bool %97 %uint_1 + OpSelectionMerge %100 None + OpBranchConditional %99 %101 %102 + %101 = OpLabel + %105 = OpSampledImage %104 %plane0 %smp + %103 = OpImageSampleExplicitLod %v4float %105 %82 Lod %8 + %106 = OpVectorShuffle %v3float %103 %103 0 1 2 + OpStore %color %106 + OpBranch %100 + %102 = OpLabel + %108 = OpSampledImage %104 %plane0 %smp + %107 = OpImageSampleExplicitLod %v4float %108 %82 Lod %8 + %109 = OpCompositeExtract %float %107 0 + %111 = OpSampledImage %104 %plane1 %smp + %110 = OpImageSampleExplicitLod %v4float %111 %92 Lod %8 + %112 = OpVectorShuffle %v2float %110 %110 0 1 + %113 = OpCompositeExtract %float %112 0 + %114 = OpCompositeExtract %float %112 1 + %115 = OpCompositeConstruct %v4float %109 %113 %114 %float_1 + %116 = OpCompositeExtract %mat3v4float %params_0 2 + %117 = OpVectorTimesMatrix %v3float %115 %116 + OpStore %color %117 + OpBranch %100 + %100 = OpLabel + %118 = OpCompositeExtract %uint %params_0 1 + %120 = OpIEqual %bool %118 %119 + OpSelectionMerge %121 None + OpBranchConditional %120 %122 %121 + %122 = OpLabel + %124 = OpLoad %v3float %color + %125 = OpCompositeExtract %GammaTransferParams %params_0 3 + %123 = OpFunctionCall %v3float %gammaCorrection %124 %125 + OpStore %color %123 + %126 = OpCompositeExtract %mat3v3float %params_0 5 + %127 = OpLoad %v3float %color + %128 = OpMatrixTimesVector %v3float %126 %127 + OpStore %color %128 + %130 = OpLoad %v3float %color + %131 = OpCompositeExtract %GammaTransferParams %params_0 4 + %129 = OpFunctionCall %v3float %gammaCorrection %130 %131 + OpStore %color %129 + OpBranch %121 + %121 = OpLabel + %132 = OpLoad %v3float %color + %133 = OpCompositeExtract %float %132 0 + %134 = OpCompositeExtract %float %132 1 + %135 = OpCompositeExtract %float %132 2 + %136 = OpCompositeConstruct %v4float %133 %134 %135 %float_1 + OpReturnValue %136 + OpFunctionEnd +%textureSampleBaseClampToEdge_7c04e6 = OpFunction %void None %137 + %140 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %142 = OpLoad %11 %arg_0 + %143 = OpLoad %11 %ext_tex_plane_1 + %144 = OpLoad %24 %arg_1 + %147 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0 + %148 = OpLoad %ExternalTextureParams %147 + %141 = OpFunctionCall %v4float %textureSampleExternal %142 %143 %144 %87 %148 + OpStore %res %141 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %151 + %153 = OpLabel + %154 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %137 + %156 = OpLabel + %157 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %157 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %137 + %159 = OpLabel + %160 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %137 + %162 = OpLabel + %163 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.wgsl new file mode 100644 index 0000000000..f24b223725 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.wgsl @@ -0,0 +1,23 @@ +@group(1) @binding(0) var arg_0 : texture_external; + +@group(1) @binding(1) var arg_1 : sampler; + +fn textureSampleBaseClampToEdge_7c04e6() { + var res : vec4 = textureSampleBaseClampToEdge(arg_0, arg_1, vec2()); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + textureSampleBaseClampToEdge_7c04e6(); + return vec4(); +} + +@fragment +fn fragment_main() { + textureSampleBaseClampToEdge_7c04e6(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureSampleBaseClampToEdge_7c04e6(); +} diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl new file mode 100644 index 0000000000..2952fdc3d7 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl @@ -0,0 +1,45 @@ +// Copyright 2022 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +@group(1) @binding(0) var arg_0: texture_2d; +@group(1) @binding(1) var arg_1: sampler; + +// fn textureSampleBaseClampToEdge(texture: texture_2d, sampler: sampler, coords: vec2) -> vec4 +fn textureSampleBaseClampToEdge_9ca02c() { + var res: vec4 = textureSampleBaseClampToEdge(arg_0, arg_1, vec2()); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + textureSampleBaseClampToEdge_9ca02c(); + return vec4(); +} + +@fragment +fn fragment_main() { + textureSampleBaseClampToEdge_9ca02c(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureSampleBaseClampToEdge_9ca02c(); +} diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..c1df2b14ec --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.dxc.hlsl @@ -0,0 +1,42 @@ +Texture2D arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +float4 tint_textureSampleBaseClampToEdge(Texture2D t, SamplerState s, float2 coord) { + int3 tint_tmp; + t.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z); + const float2 dims = float2(tint_tmp.xy); + const float2 half_texel = ((0.5f).xx / dims); + const float2 clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return t.SampleLevel(s, clamped, 0.0f); +} + +void textureSampleBaseClampToEdge_9ca02c() { + float4 res = tint_textureSampleBaseClampToEdge(arg_0, arg_1, (0.0f).xx); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureSampleBaseClampToEdge_9ca02c(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + textureSampleBaseClampToEdge_9ca02c(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureSampleBaseClampToEdge_9ca02c(); + return; +} diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..c1df2b14ec --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.fxc.hlsl @@ -0,0 +1,42 @@ +Texture2D arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +float4 tint_textureSampleBaseClampToEdge(Texture2D t, SamplerState s, float2 coord) { + int3 tint_tmp; + t.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z); + const float2 dims = float2(tint_tmp.xy); + const float2 half_texel = ((0.5f).xx / dims); + const float2 clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return t.SampleLevel(s, clamped, 0.0f); +} + +void textureSampleBaseClampToEdge_9ca02c() { + float4 res = tint_textureSampleBaseClampToEdge(arg_0, arg_1, (0.0f).xx); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureSampleBaseClampToEdge_9ca02c(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + textureSampleBaseClampToEdge_9ca02c(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureSampleBaseClampToEdge_9ca02c(); + return; +} diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.glsl new file mode 100644 index 0000000000..7db54732e8 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.glsl @@ -0,0 +1,79 @@ +#version 310 es + + +vec4 tint_textureSampleBaseClampToEdge(highp sampler2D t_1, highp sampler2D t_s, vec2 coord) { + vec2 dims = vec2(textureSize(t_1, 0)); + vec2 half_texel = (vec2(0.5f) / dims); + vec2 clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return textureLod(t_s, clamped, 0.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D arg_0_arg_1; +void textureSampleBaseClampToEdge_9ca02c() { + vec4 res = tint_textureSampleBaseClampToEdge(arg_0_1, arg_0_arg_1, vec2(0.0f)); +} + +vec4 vertex_main() { + textureSampleBaseClampToEdge_9ca02c(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + + +vec4 tint_textureSampleBaseClampToEdge(highp sampler2D t_1, highp sampler2D t_s, vec2 coord) { + vec2 dims = vec2(textureSize(t_1, 0)); + vec2 half_texel = (vec2(0.5f) / dims); + vec2 clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return textureLod(t_s, clamped, 0.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D arg_0_arg_1; +void textureSampleBaseClampToEdge_9ca02c() { + vec4 res = tint_textureSampleBaseClampToEdge(arg_0_1, arg_0_arg_1, vec2(0.0f)); +} + +void fragment_main() { + textureSampleBaseClampToEdge_9ca02c(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + + +vec4 tint_textureSampleBaseClampToEdge(highp sampler2D t_1, highp sampler2D t_s, vec2 coord) { + vec2 dims = vec2(textureSize(t_1, 0)); + vec2 half_texel = (vec2(0.5f) / dims); + vec2 clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return textureLod(t_s, clamped, 0.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D arg_0_arg_1; +void textureSampleBaseClampToEdge_9ca02c() { + vec4 res = tint_textureSampleBaseClampToEdge(arg_0_1, arg_0_arg_1, vec2(0.0f)); +} + +void compute_main() { + textureSampleBaseClampToEdge_9ca02c(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.msl new file mode 100644 index 0000000000..f0f7da3333 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.msl @@ -0,0 +1,40 @@ +#include + +using namespace metal; +float4 tint_textureSampleBaseClampToEdge(texture2d t, sampler s, float2 coord) { + float2 const dims = float2(int2(t.get_width(0), t.get_height(0))); + float2 const half_texel = (float2(0.5f) / dims); + float2 const clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return t.sample(s, clamped, level(0.0f)); +} + +void textureSampleBaseClampToEdge_9ca02c(texture2d tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_textureSampleBaseClampToEdge(tint_symbol_1, tint_symbol_2, float2(0.0f)); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner(texture2d tint_symbol_3, sampler tint_symbol_4) { + textureSampleBaseClampToEdge_9ca02c(tint_symbol_3, tint_symbol_4); + return float4(0.0f); +} + +vertex tint_symbol vertex_main(texture2d tint_symbol_5 [[texture(0)]], sampler tint_symbol_6 [[sampler(0)]]) { + float4 const inner_result = vertex_main_inner(tint_symbol_5, tint_symbol_6); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main(texture2d tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureSampleBaseClampToEdge_9ca02c(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureSampleBaseClampToEdge_9ca02c(tint_symbol_9, tint_symbol_10); + return; +} + diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.spvasm new file mode 100644 index 0000000000..29da4348e6 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.spvasm @@ -0,0 +1,110 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 63 +; Schema: 0 + OpCapability Shader + OpCapability ImageQuery + %31 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %arg_0 "arg_0" + OpName %arg_1 "arg_1" + OpName %tint_textureSampleBaseClampToEdge "tint_textureSampleBaseClampToEdge" + OpName %t "t" + OpName %s "s" + OpName %coord "coord" + OpName %textureSampleBaseClampToEdge_9ca02c "textureSampleBaseClampToEdge_9ca02c" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + OpDecorate %arg_0 DescriptorSet 1 + OpDecorate %arg_0 Binding 0 + OpDecorate %arg_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %11 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %14 = OpTypeSampler +%_ptr_UniformConstant_14 = OpTypePointer UniformConstant %14 + %arg_1 = OpVariable %_ptr_UniformConstant_14 UniformConstant + %v2float = OpTypeVector %float 2 + %15 = OpTypeFunction %v4float %11 %14 %v2float + %int = OpTypeInt 32 1 + %v2int = OpTypeVector %int 2 + %26 = OpConstantNull %int + %float_0_5 = OpConstant %float 0.5 + %28 = OpConstantComposite %v2float %float_0_5 %float_0_5 + %float_1 = OpConstant %float 1 +%_ptr_Function_v2float = OpTypePointer Function %v2float + %36 = OpConstantNull %v2float + %39 = OpTypeSampledImage %11 + %void = OpTypeVoid + %41 = OpTypeFunction %void +%_ptr_Function_v4float = OpTypePointer Function %v4float + %50 = OpTypeFunction %v4float +%tint_textureSampleBaseClampToEdge = OpFunction %v4float None %15 + %t = OpFunctionParameter %11 + %s = OpFunctionParameter %14 + %coord = OpFunctionParameter %v2float + %21 = OpLabel + %34 = OpVariable %_ptr_Function_v2float Function %36 + %23 = OpImageQuerySizeLod %v2int %t %26 + %22 = OpConvertSToF %v2float %23 + %29 = OpFDiv %v2float %28 %22 + %37 = OpCompositeConstruct %v2float %float_1 %float_1 + %33 = OpFSub %v2float %37 %29 + %30 = OpExtInst %v2float %31 NClamp %coord %29 %33 + %40 = OpSampledImage %39 %t %s + %38 = OpImageSampleExplicitLod %v4float %40 %30 Lod %8 + OpReturnValue %38 + OpFunctionEnd +%textureSampleBaseClampToEdge_9ca02c = OpFunction %void None %41 + %44 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %46 = OpLoad %11 %arg_0 + %47 = OpLoad %14 %arg_1 + %45 = OpFunctionCall %v4float %tint_textureSampleBaseClampToEdge %46 %47 %36 + OpStore %res %45 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %50 + %52 = OpLabel + %53 = OpFunctionCall %void %textureSampleBaseClampToEdge_9ca02c + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %41 + %55 = OpLabel + %56 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %56 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %41 + %58 = OpLabel + %59 = OpFunctionCall %void %textureSampleBaseClampToEdge_9ca02c + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %41 + %61 = OpLabel + %62 = OpFunctionCall %void %textureSampleBaseClampToEdge_9ca02c + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.wgsl new file mode 100644 index 0000000000..4d1b105194 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.wgsl @@ -0,0 +1,23 @@ +@group(1) @binding(0) var arg_0 : texture_2d; + +@group(1) @binding(1) var arg_1 : sampler; + +fn textureSampleBaseClampToEdge_9ca02c() { + var res : vec4 = textureSampleBaseClampToEdge(arg_0, arg_1, vec2()); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + textureSampleBaseClampToEdge_9ca02c(); + return vec4(); +} + +@fragment +fn fragment_main() { + textureSampleBaseClampToEdge_9ca02c(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureSampleBaseClampToEdge_9ca02c(); +} diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.dxc.hlsl index 914a3c9c56..0d69ae7b27 100644 --- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.dxc.hlsl @@ -1,3 +1,7 @@ +builtins/gen/literal/textureSampleLevel/979816.wgsl:28:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, vec2()); + ^^^^^^^^^^^^^^^^^^ + struct GammaTransferParams { float G; float A; diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.fxc.hlsl index 914a3c9c56..0d69ae7b27 100644 --- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.fxc.hlsl @@ -1,3 +1,7 @@ +builtins/gen/literal/textureSampleLevel/979816.wgsl:28:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, vec2()); + ^^^^^^^^^^^^^^^^^^ + struct GammaTransferParams { float G; float A; diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl index e90a09d82a..c826300e7a 100644 --- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl @@ -1,3 +1,7 @@ +builtins/gen/literal/textureSampleLevel/979816.wgsl:28:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, vec2()); + ^^^^^^^^^^^^^^^^^^ + #version 310 es struct GammaTransferParams { diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.msl index 5b65152baf..1d078bbfb6 100644 --- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.msl @@ -1,3 +1,7 @@ +builtins/gen/literal/textureSampleLevel/979816.wgsl:28:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, vec2()); + ^^^^^^^^^^^^^^^^^^ + #include using namespace metal; diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.spvasm index acb3f03441..e5131422f5 100644 --- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.spvasm @@ -1,3 +1,7 @@ +builtins/gen/literal/textureSampleLevel/979816.wgsl:28:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, vec2()); + ^^^^^^^^^^^^^^^^^^ + ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.wgsl index 2583d0f8f0..5e78e8435c 100644 --- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.wgsl +++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.wgsl @@ -1,3 +1,7 @@ +builtins/gen/literal/textureSampleLevel/979816.wgsl:28:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, vec2()); + ^^^^^^^^^^^^^^^^^^ + @group(1) @binding(0) var arg_0 : texture_external; @group(1) @binding(1) var arg_1 : sampler; diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl new file mode 100644 index 0000000000..dbe6d14e9c --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl @@ -0,0 +1,46 @@ +// Copyright 2022 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +@group(1) @binding(0) var arg_0: texture_external; +@group(1) @binding(1) var arg_1: sampler; + +// fn textureSampleBaseClampToEdge(texture: texture_external, sampler: sampler, coords: vec2) -> vec4 +fn textureSampleBaseClampToEdge_7c04e6() { + var arg_2 = vec2(); + var res: vec4 = textureSampleBaseClampToEdge(arg_0, arg_1, arg_2); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + textureSampleBaseClampToEdge_7c04e6(); + return vec4(); +} + +@fragment +fn fragment_main() { + textureSampleBaseClampToEdge_7c04e6(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureSampleBaseClampToEdge_7c04e6(); +} diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..629c97abf8 --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl @@ -0,0 +1,123 @@ +struct GammaTransferParams { + float G; + float A; + float B; + float C; + float D; + float E; + float F; + uint padding; +}; +struct ExternalTextureParams { + uint numPlanes; + uint doYuvToRgbConversionOnly; + float3x4 yuvToRgbConversionMatrix; + GammaTransferParams gammaDecodeParams; + GammaTransferParams gammaEncodeParams; + float3x3 gamutConversionMatrix; +}; + +Texture2D ext_tex_plane_1 : register(t2, space1); +cbuffer cbuffer_ext_tex_params : register(b3, space1) { + uint4 ext_tex_params[11]; +}; +Texture2D arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +float3 gammaCorrection(float3 v, GammaTransferParams params) { + const bool3 cond = (abs(v) < float3((params.D).xxx)); + const float3 t = (sign(v) * ((params.C * abs(v)) + params.F)); + const float3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), float3((params.G).xxx)) + params.E)); + return (cond ? t : f); +} + +float4 textureSampleExternal(Texture2D plane0, Texture2D plane1, SamplerState smp, float2 coord, ExternalTextureParams params) { + int3 tint_tmp; + plane0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z); + const float2 plane0_dims = float2(tint_tmp.xy); + const float2 plane0_half_texel = ((0.5f).xx / plane0_dims); + const float2 plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + int3 tint_tmp_1; + plane1.GetDimensions(0, tint_tmp_1.x, tint_tmp_1.y, tint_tmp_1.z); + const float2 plane1_dims = float2(tint_tmp_1.xy); + const float2 plane1_half_texel = ((0.5f).xx / plane1_dims); + const float2 plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + float3 color = float3(0.0f, 0.0f, 0.0f); + if ((params.numPlanes == 1u)) { + color = plane0.SampleLevel(smp, plane0_clamped, 0.0f).rgb; + } else { + color = mul(params.yuvToRgbConversionMatrix, float4(plane0.SampleLevel(smp, plane0_clamped, 0.0f).r, plane1.SampleLevel(smp, plane1_clamped, 0.0f).rg, 1.0f)); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = mul(color, params.gamutConversionMatrix); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return float4(color, 1.0f); +} + +float3x4 tint_symbol_3(uint4 buffer[11], uint offset) { + const uint scalar_offset = ((offset + 0u)) / 4; + const uint scalar_offset_1 = ((offset + 16u)) / 4; + const uint scalar_offset_2 = ((offset + 32u)) / 4; + return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4])); +} + +GammaTransferParams tint_symbol_5(uint4 buffer[11], uint offset) { + const uint scalar_offset_3 = ((offset + 0u)) / 4; + const uint scalar_offset_4 = ((offset + 4u)) / 4; + const uint scalar_offset_5 = ((offset + 8u)) / 4; + const uint scalar_offset_6 = ((offset + 12u)) / 4; + const uint scalar_offset_7 = ((offset + 16u)) / 4; + const uint scalar_offset_8 = ((offset + 20u)) / 4; + const uint scalar_offset_9 = ((offset + 24u)) / 4; + const uint scalar_offset_10 = ((offset + 28u)) / 4; + const GammaTransferParams tint_symbol_9 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]}; + return tint_symbol_9; +} + +float3x3 tint_symbol_7(uint4 buffer[11], uint offset) { + const uint scalar_offset_11 = ((offset + 0u)) / 4; + const uint scalar_offset_12 = ((offset + 16u)) / 4; + const uint scalar_offset_13 = ((offset + 32u)) / 4; + return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz)); +} + +ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) { + const uint scalar_offset_14 = ((offset + 0u)) / 4; + const uint scalar_offset_15 = ((offset + 4u)) / 4; + const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], buffer[scalar_offset_15 / 4][scalar_offset_15 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))}; + return tint_symbol_10; +} + +void textureSampleBaseClampToEdge_7c04e6() { + float2 arg_2 = (0.0f).xx; + float4 res = textureSampleExternal(arg_0, ext_tex_plane_1, arg_1, arg_2, tint_symbol_1(ext_tex_params, 0u)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureSampleBaseClampToEdge_7c04e6(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + textureSampleBaseClampToEdge_7c04e6(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureSampleBaseClampToEdge_7c04e6(); + return; +} diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..629c97abf8 --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl @@ -0,0 +1,123 @@ +struct GammaTransferParams { + float G; + float A; + float B; + float C; + float D; + float E; + float F; + uint padding; +}; +struct ExternalTextureParams { + uint numPlanes; + uint doYuvToRgbConversionOnly; + float3x4 yuvToRgbConversionMatrix; + GammaTransferParams gammaDecodeParams; + GammaTransferParams gammaEncodeParams; + float3x3 gamutConversionMatrix; +}; + +Texture2D ext_tex_plane_1 : register(t2, space1); +cbuffer cbuffer_ext_tex_params : register(b3, space1) { + uint4 ext_tex_params[11]; +}; +Texture2D arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +float3 gammaCorrection(float3 v, GammaTransferParams params) { + const bool3 cond = (abs(v) < float3((params.D).xxx)); + const float3 t = (sign(v) * ((params.C * abs(v)) + params.F)); + const float3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), float3((params.G).xxx)) + params.E)); + return (cond ? t : f); +} + +float4 textureSampleExternal(Texture2D plane0, Texture2D plane1, SamplerState smp, float2 coord, ExternalTextureParams params) { + int3 tint_tmp; + plane0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z); + const float2 plane0_dims = float2(tint_tmp.xy); + const float2 plane0_half_texel = ((0.5f).xx / plane0_dims); + const float2 plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + int3 tint_tmp_1; + plane1.GetDimensions(0, tint_tmp_1.x, tint_tmp_1.y, tint_tmp_1.z); + const float2 plane1_dims = float2(tint_tmp_1.xy); + const float2 plane1_half_texel = ((0.5f).xx / plane1_dims); + const float2 plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + float3 color = float3(0.0f, 0.0f, 0.0f); + if ((params.numPlanes == 1u)) { + color = plane0.SampleLevel(smp, plane0_clamped, 0.0f).rgb; + } else { + color = mul(params.yuvToRgbConversionMatrix, float4(plane0.SampleLevel(smp, plane0_clamped, 0.0f).r, plane1.SampleLevel(smp, plane1_clamped, 0.0f).rg, 1.0f)); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = mul(color, params.gamutConversionMatrix); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return float4(color, 1.0f); +} + +float3x4 tint_symbol_3(uint4 buffer[11], uint offset) { + const uint scalar_offset = ((offset + 0u)) / 4; + const uint scalar_offset_1 = ((offset + 16u)) / 4; + const uint scalar_offset_2 = ((offset + 32u)) / 4; + return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4])); +} + +GammaTransferParams tint_symbol_5(uint4 buffer[11], uint offset) { + const uint scalar_offset_3 = ((offset + 0u)) / 4; + const uint scalar_offset_4 = ((offset + 4u)) / 4; + const uint scalar_offset_5 = ((offset + 8u)) / 4; + const uint scalar_offset_6 = ((offset + 12u)) / 4; + const uint scalar_offset_7 = ((offset + 16u)) / 4; + const uint scalar_offset_8 = ((offset + 20u)) / 4; + const uint scalar_offset_9 = ((offset + 24u)) / 4; + const uint scalar_offset_10 = ((offset + 28u)) / 4; + const GammaTransferParams tint_symbol_9 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]}; + return tint_symbol_9; +} + +float3x3 tint_symbol_7(uint4 buffer[11], uint offset) { + const uint scalar_offset_11 = ((offset + 0u)) / 4; + const uint scalar_offset_12 = ((offset + 16u)) / 4; + const uint scalar_offset_13 = ((offset + 32u)) / 4; + return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz)); +} + +ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) { + const uint scalar_offset_14 = ((offset + 0u)) / 4; + const uint scalar_offset_15 = ((offset + 4u)) / 4; + const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], buffer[scalar_offset_15 / 4][scalar_offset_15 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))}; + return tint_symbol_10; +} + +void textureSampleBaseClampToEdge_7c04e6() { + float2 arg_2 = (0.0f).xx; + float4 res = textureSampleExternal(arg_0, ext_tex_plane_1, arg_1, arg_2, tint_symbol_1(ext_tex_params, 0u)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureSampleBaseClampToEdge_7c04e6(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + textureSampleBaseClampToEdge_7c04e6(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureSampleBaseClampToEdge_7c04e6(); + return; +} diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl new file mode 100644 index 0000000000..d26800b957 --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl @@ -0,0 +1,223 @@ +#version 310 es + +struct GammaTransferParams { + float G; + float A; + float B; + float C; + float D; + float E; + float F; + uint padding; +}; + +struct ExternalTextureParams { + uint numPlanes; + uint doYuvToRgbConversionOnly; + mat3x4 yuvToRgbConversionMatrix; + GammaTransferParams gammaDecodeParams; + GammaTransferParams gammaEncodeParams; + mat3 gamutConversionMatrix; +}; + +layout(binding = 3, std140) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; +} ext_tex_params; + +vec3 gammaCorrection(vec3 v, GammaTransferParams params) { + bvec3 cond = lessThan(abs(v), vec3(params.D)); + vec3 t = (sign(v) * ((params.C * abs(v)) + params.F)); + vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return mix(f, t, cond); +} + + +vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) { + vec2 plane0_dims = vec2(textureSize(plane0_1, 0)); + vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims); + vec2 plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + vec2 plane1_dims = vec2(textureSize(plane1_1, 0)); + vec2 plane1_half_texel = (vec2(0.5f) / plane1_dims); + vec2 plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + vec3 color = vec3(0.0f, 0.0f, 0.0f); + if ((params.numPlanes == 1u)) { + color = textureLod(plane0_smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureLod(plane0_smp, plane0_clamped, 0.0f).r, textureLod(plane1_smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D ext_tex_plane_1_1; +uniform highp sampler2D arg_0_arg_1; +uniform highp sampler2D ext_tex_plane_1_arg_1; +void textureSampleBaseClampToEdge_7c04e6() { + vec2 arg_2 = vec2(0.0f); + vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params.inner); +} + +vec4 vertex_main() { + textureSampleBaseClampToEdge_7c04e6(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + +struct GammaTransferParams { + float G; + float A; + float B; + float C; + float D; + float E; + float F; + uint padding; +}; + +struct ExternalTextureParams { + uint numPlanes; + uint doYuvToRgbConversionOnly; + mat3x4 yuvToRgbConversionMatrix; + GammaTransferParams gammaDecodeParams; + GammaTransferParams gammaEncodeParams; + mat3 gamutConversionMatrix; +}; + +layout(binding = 3, std140) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; +} ext_tex_params; + +vec3 gammaCorrection(vec3 v, GammaTransferParams params) { + bvec3 cond = lessThan(abs(v), vec3(params.D)); + vec3 t = (sign(v) * ((params.C * abs(v)) + params.F)); + vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return mix(f, t, cond); +} + + +vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) { + vec2 plane0_dims = vec2(textureSize(plane0_1, 0)); + vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims); + vec2 plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + vec2 plane1_dims = vec2(textureSize(plane1_1, 0)); + vec2 plane1_half_texel = (vec2(0.5f) / plane1_dims); + vec2 plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + vec3 color = vec3(0.0f, 0.0f, 0.0f); + if ((params.numPlanes == 1u)) { + color = textureLod(plane0_smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureLod(plane0_smp, plane0_clamped, 0.0f).r, textureLod(plane1_smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D ext_tex_plane_1_1; +uniform highp sampler2D arg_0_arg_1; +uniform highp sampler2D ext_tex_plane_1_arg_1; +void textureSampleBaseClampToEdge_7c04e6() { + vec2 arg_2 = vec2(0.0f); + vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params.inner); +} + +void fragment_main() { + textureSampleBaseClampToEdge_7c04e6(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +struct GammaTransferParams { + float G; + float A; + float B; + float C; + float D; + float E; + float F; + uint padding; +}; + +struct ExternalTextureParams { + uint numPlanes; + uint doYuvToRgbConversionOnly; + mat3x4 yuvToRgbConversionMatrix; + GammaTransferParams gammaDecodeParams; + GammaTransferParams gammaEncodeParams; + mat3 gamutConversionMatrix; +}; + +layout(binding = 3, std140) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; +} ext_tex_params; + +vec3 gammaCorrection(vec3 v, GammaTransferParams params) { + bvec3 cond = lessThan(abs(v), vec3(params.D)); + vec3 t = (sign(v) * ((params.C * abs(v)) + params.F)); + vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E)); + return mix(f, t, cond); +} + + +vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) { + vec2 plane0_dims = vec2(textureSize(plane0_1, 0)); + vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims); + vec2 plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + vec2 plane1_dims = vec2(textureSize(plane1_1, 0)); + vec2 plane1_half_texel = (vec2(0.5f) / plane1_dims); + vec2 plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + vec3 color = vec3(0.0f, 0.0f, 0.0f); + if ((params.numPlanes == 1u)) { + color = textureLod(plane0_smp, plane0_clamped, 0.0f).rgb; + } else { + color = (vec4(textureLod(plane0_smp, plane0_clamped, 0.0f).r, textureLod(plane1_smp, plane1_clamped, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return vec4(color, 1.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D ext_tex_plane_1_1; +uniform highp sampler2D arg_0_arg_1; +uniform highp sampler2D ext_tex_plane_1_arg_1; +void textureSampleBaseClampToEdge_7c04e6() { + vec2 arg_2 = vec2(0.0f); + vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params.inner); +} + +void compute_main() { + textureSampleBaseClampToEdge_7c04e6(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl new file mode 100644 index 0000000000..d2a442a33d --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl @@ -0,0 +1,96 @@ +#include + +using namespace metal; + +template +struct tint_array { + const constant T& operator[](size_t i) const constant { return elements[i]; } + device T& operator[](size_t i) device { return elements[i]; } + const device T& operator[](size_t i) const device { return elements[i]; } + thread T& operator[](size_t i) thread { return elements[i]; } + const thread T& operator[](size_t i) const thread { return elements[i]; } + threadgroup T& operator[](size_t i) threadgroup { return elements[i]; } + const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; } + T elements[N]; +}; + +struct GammaTransferParams { + /* 0x0000 */ float G; + /* 0x0004 */ float A; + /* 0x0008 */ float B; + /* 0x000c */ float C; + /* 0x0010 */ float D; + /* 0x0014 */ float E; + /* 0x0018 */ float F; + /* 0x001c */ uint padding; +}; + +struct ExternalTextureParams { + /* 0x0000 */ uint numPlanes; + /* 0x0004 */ uint doYuvToRgbConversionOnly; + /* 0x0008 */ tint_array tint_pad; + /* 0x0010 */ float3x4 yuvToRgbConversionMatrix; + /* 0x0040 */ GammaTransferParams gammaDecodeParams; + /* 0x0060 */ GammaTransferParams gammaEncodeParams; + /* 0x0080 */ float3x3 gamutConversionMatrix; +}; + +float3 gammaCorrection(float3 v, GammaTransferParams params) { + bool3 const cond = (fabs(v) < float3(params.D)); + float3 const t = (sign(v) * ((params.C * fabs(v)) + params.F)); + float3 const f = (sign(v) * (pow(((params.A * fabs(v)) + params.B), float3(params.G)) + params.E)); + return select(f, t, cond); +} + +float4 textureSampleExternal(texture2d plane0, texture2d plane1, sampler smp, float2 coord, ExternalTextureParams params) { + float2 const plane0_dims = float2(int2(plane0.get_width(0), plane0.get_height(0))); + float2 const plane0_half_texel = (float2(0.5f) / plane0_dims); + float2 const plane0_clamped = clamp(coord, plane0_half_texel, (1.0f - plane0_half_texel)); + float2 const plane1_dims = float2(int2(plane1.get_width(0), plane1.get_height(0))); + float2 const plane1_half_texel = (float2(0.5f) / plane1_dims); + float2 const plane1_clamped = clamp(coord, plane1_half_texel, (1.0f - plane1_half_texel)); + float3 color = 0.0f; + if ((params.numPlanes == 1u)) { + color = float4(plane0.sample(smp, plane0_clamped, level(0.0f))).rgb; + } else { + color = (float4(plane0.sample(smp, plane0_clamped, level(0.0f))[0], float4(plane1.sample(smp, plane1_clamped, level(0.0f))).rg, 1.0f) * params.yuvToRgbConversionMatrix); + } + if ((params.doYuvToRgbConversionOnly == 0u)) { + color = gammaCorrection(color, params.gammaDecodeParams); + color = (params.gamutConversionMatrix * color); + color = gammaCorrection(color, params.gammaEncodeParams); + } + return float4(color, 1.0f); +} + +void textureSampleBaseClampToEdge_7c04e6(texture2d tint_symbol_1, texture2d tint_symbol_2, sampler tint_symbol_3, const constant ExternalTextureParams* const tint_symbol_4) { + float2 arg_2 = float2(0.0f); + float4 res = textureSampleExternal(tint_symbol_1, tint_symbol_2, tint_symbol_3, arg_2, *(tint_symbol_4)); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner(texture2d tint_symbol_5, texture2d tint_symbol_6, sampler tint_symbol_7, const constant ExternalTextureParams* const tint_symbol_8) { + textureSampleBaseClampToEdge_7c04e6(tint_symbol_5, tint_symbol_6, tint_symbol_7, tint_symbol_8); + return float4(0.0f); +} + +vertex tint_symbol vertex_main(texture2d tint_symbol_9 [[texture(0)]], texture2d tint_symbol_10 [[texture(1)]], sampler tint_symbol_11 [[sampler(0)]], const constant ExternalTextureParams* tint_symbol_12 [[buffer(2)]]) { + float4 const inner_result = vertex_main_inner(tint_symbol_9, tint_symbol_10, tint_symbol_11, tint_symbol_12); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main(texture2d tint_symbol_13 [[texture(0)]], texture2d tint_symbol_14 [[texture(1)]], sampler tint_symbol_15 [[sampler(0)]], const constant ExternalTextureParams* tint_symbol_16 [[buffer(2)]]) { + textureSampleBaseClampToEdge_7c04e6(tint_symbol_13, tint_symbol_14, tint_symbol_15, tint_symbol_16); + return; +} + +kernel void compute_main(texture2d tint_symbol_17 [[texture(0)]], texture2d tint_symbol_18 [[texture(1)]], sampler tint_symbol_19 [[sampler(0)]], const constant ExternalTextureParams* tint_symbol_20 [[buffer(2)]]) { + textureSampleBaseClampToEdge_7c04e6(tint_symbol_17, tint_symbol_18, tint_symbol_19, tint_symbol_20); + return; +} + diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm new file mode 100644 index 0000000000..1c6d7d4df7 --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm @@ -0,0 +1,280 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 166 +; Schema: 0 + OpCapability Shader + OpCapability ImageQuery + %31 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %ext_tex_plane_1 "ext_tex_plane_1" + OpName %ext_tex_params_block "ext_tex_params_block" + OpMemberName %ext_tex_params_block 0 "inner" + OpName %ExternalTextureParams "ExternalTextureParams" + OpMemberName %ExternalTextureParams 0 "numPlanes" + OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly" + OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix" + OpMemberName %ExternalTextureParams 3 "gammaDecodeParams" + OpName %GammaTransferParams "GammaTransferParams" + OpMemberName %GammaTransferParams 0 "G" + OpMemberName %GammaTransferParams 1 "A" + OpMemberName %GammaTransferParams 2 "B" + OpMemberName %GammaTransferParams 3 "C" + OpMemberName %GammaTransferParams 4 "D" + OpMemberName %GammaTransferParams 5 "E" + OpMemberName %GammaTransferParams 6 "F" + OpMemberName %GammaTransferParams 7 "padding" + OpMemberName %ExternalTextureParams 4 "gammaEncodeParams" + OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix" + OpName %ext_tex_params "ext_tex_params" + OpName %arg_0 "arg_0" + OpName %arg_1 "arg_1" + OpName %gammaCorrection "gammaCorrection" + OpName %v "v" + OpName %params "params" + OpName %textureSampleExternal "textureSampleExternal" + OpName %plane0 "plane0" + OpName %plane1 "plane1" + OpName %smp "smp" + OpName %coord "coord" + OpName %params_0 "params" + OpName %color "color" + OpName %textureSampleBaseClampToEdge_7c04e6 "textureSampleBaseClampToEdge_7c04e6" + OpName %arg_2 "arg_2" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + OpDecorate %ext_tex_plane_1 DescriptorSet 1 + OpDecorate %ext_tex_plane_1 Binding 2 + OpDecorate %ext_tex_params_block Block + OpMemberDecorate %ext_tex_params_block 0 Offset 0 + OpMemberDecorate %ExternalTextureParams 0 Offset 0 + OpMemberDecorate %ExternalTextureParams 1 Offset 4 + OpMemberDecorate %ExternalTextureParams 2 Offset 16 + OpMemberDecorate %ExternalTextureParams 2 ColMajor + OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16 + OpMemberDecorate %ExternalTextureParams 3 Offset 64 + OpMemberDecorate %GammaTransferParams 0 Offset 0 + OpMemberDecorate %GammaTransferParams 1 Offset 4 + OpMemberDecorate %GammaTransferParams 2 Offset 8 + OpMemberDecorate %GammaTransferParams 3 Offset 12 + OpMemberDecorate %GammaTransferParams 4 Offset 16 + OpMemberDecorate %GammaTransferParams 5 Offset 20 + OpMemberDecorate %GammaTransferParams 6 Offset 24 + OpMemberDecorate %GammaTransferParams 7 Offset 28 + OpMemberDecorate %ExternalTextureParams 4 Offset 96 + OpMemberDecorate %ExternalTextureParams 5 Offset 128 + OpMemberDecorate %ExternalTextureParams 5 ColMajor + OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16 + OpDecorate %ext_tex_params NonWritable + OpDecorate %ext_tex_params DescriptorSet 1 + OpDecorate %ext_tex_params Binding 3 + OpDecorate %arg_0 DescriptorSet 1 + OpDecorate %arg_0 Binding 0 + OpDecorate %arg_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %11 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 +%ext_tex_plane_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %uint = OpTypeInt 32 0 +%mat3v4float = OpTypeMatrix %v4float 3 +%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint + %v3float = OpTypeVector %float 3 +%mat3v3float = OpTypeMatrix %v3float 3 +%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float +%ext_tex_params_block = OpTypeStruct %ExternalTextureParams +%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block +%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform + %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %24 = OpTypeSampler +%_ptr_UniformConstant_24 = OpTypePointer UniformConstant %24 + %arg_1 = OpVariable %_ptr_UniformConstant_24 UniformConstant + %25 = OpTypeFunction %v3float %v3float %GammaTransferParams + %bool = OpTypeBool + %v3bool = OpTypeVector %bool 3 +%_ptr_Function_v3float = OpTypePointer Function %v3float + %45 = OpConstantNull %v3float + %v2float = OpTypeVector %float 2 + %65 = OpTypeFunction %v4float %11 %11 %24 %v2float %ExternalTextureParams + %int = OpTypeInt 32 1 + %v2int = OpTypeVector %int 2 + %78 = OpConstantNull %int + %float_0_5 = OpConstant %float 0.5 + %80 = OpConstantComposite %v2float %float_0_5 %float_0_5 + %float_1 = OpConstant %float 1 +%_ptr_Function_v2float = OpTypePointer Function %v2float + %87 = OpConstantNull %v2float + %uint_1 = OpConstant %uint 1 + %104 = OpTypeSampledImage %11 + %119 = OpConstantNull %uint + %void = OpTypeVoid + %137 = OpTypeFunction %void + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams +%_ptr_Function_v4float = OpTypePointer Function %v4float + %153 = OpTypeFunction %v4float +%gammaCorrection = OpFunction %v3float None %25 + %v = OpFunctionParameter %v3float + %params = OpFunctionParameter %GammaTransferParams + %29 = OpLabel + %43 = OpVariable %_ptr_Function_v3float Function %45 + %55 = OpVariable %_ptr_Function_v3float Function %45 + %61 = OpVariable %_ptr_Function_v3float Function %45 + %30 = OpExtInst %v3float %31 FAbs %v + %32 = OpCompositeExtract %float %params 4 + %33 = OpCompositeConstruct %v3float %32 %32 %32 + %34 = OpFOrdLessThan %v3bool %30 %33 + %37 = OpExtInst %v3float %31 FSign %v + %38 = OpCompositeExtract %float %params 3 + %39 = OpExtInst %v3float %31 FAbs %v + %40 = OpVectorTimesScalar %v3float %39 %38 + %41 = OpCompositeExtract %float %params 6 + %46 = OpCompositeConstruct %v3float %41 %41 %41 + %42 = OpFAdd %v3float %40 %46 + %47 = OpFMul %v3float %37 %42 + %48 = OpExtInst %v3float %31 FSign %v + %50 = OpCompositeExtract %float %params 1 + %51 = OpExtInst %v3float %31 FAbs %v + %52 = OpVectorTimesScalar %v3float %51 %50 + %53 = OpCompositeExtract %float %params 2 + %56 = OpCompositeConstruct %v3float %53 %53 %53 + %54 = OpFAdd %v3float %52 %56 + %57 = OpCompositeExtract %float %params 0 + %58 = OpCompositeConstruct %v3float %57 %57 %57 + %49 = OpExtInst %v3float %31 Pow %54 %58 + %59 = OpCompositeExtract %float %params 5 + %62 = OpCompositeConstruct %v3float %59 %59 %59 + %60 = OpFAdd %v3float %49 %62 + %63 = OpFMul %v3float %48 %60 + %64 = OpSelect %v3float %34 %47 %63 + OpReturnValue %64 + OpFunctionEnd +%textureSampleExternal = OpFunction %v4float None %65 + %plane0 = OpFunctionParameter %11 + %plane1 = OpFunctionParameter %11 + %smp = OpFunctionParameter %24 + %coord = OpFunctionParameter %v2float + %params_0 = OpFunctionParameter %ExternalTextureParams + %73 = OpLabel + %85 = OpVariable %_ptr_Function_v2float Function %87 + %94 = OpVariable %_ptr_Function_v2float Function %87 + %color = OpVariable %_ptr_Function_v3float Function %45 + %75 = OpImageQuerySizeLod %v2int %plane0 %78 + %74 = OpConvertSToF %v2float %75 + %81 = OpFDiv %v2float %80 %74 + %88 = OpCompositeConstruct %v2float %float_1 %float_1 + %84 = OpFSub %v2float %88 %81 + %82 = OpExtInst %v2float %31 NClamp %coord %81 %84 + %90 = OpImageQuerySizeLod %v2int %plane1 %78 + %89 = OpConvertSToF %v2float %90 + %91 = OpFDiv %v2float %80 %89 + %95 = OpCompositeConstruct %v2float %float_1 %float_1 + %93 = OpFSub %v2float %95 %91 + %92 = OpExtInst %v2float %31 NClamp %coord %91 %93 + %97 = OpCompositeExtract %uint %params_0 0 + %99 = OpIEqual %bool %97 %uint_1 + OpSelectionMerge %100 None + OpBranchConditional %99 %101 %102 + %101 = OpLabel + %105 = OpSampledImage %104 %plane0 %smp + %103 = OpImageSampleExplicitLod %v4float %105 %82 Lod %8 + %106 = OpVectorShuffle %v3float %103 %103 0 1 2 + OpStore %color %106 + OpBranch %100 + %102 = OpLabel + %108 = OpSampledImage %104 %plane0 %smp + %107 = OpImageSampleExplicitLod %v4float %108 %82 Lod %8 + %109 = OpCompositeExtract %float %107 0 + %111 = OpSampledImage %104 %plane1 %smp + %110 = OpImageSampleExplicitLod %v4float %111 %92 Lod %8 + %112 = OpVectorShuffle %v2float %110 %110 0 1 + %113 = OpCompositeExtract %float %112 0 + %114 = OpCompositeExtract %float %112 1 + %115 = OpCompositeConstruct %v4float %109 %113 %114 %float_1 + %116 = OpCompositeExtract %mat3v4float %params_0 2 + %117 = OpVectorTimesMatrix %v3float %115 %116 + OpStore %color %117 + OpBranch %100 + %100 = OpLabel + %118 = OpCompositeExtract %uint %params_0 1 + %120 = OpIEqual %bool %118 %119 + OpSelectionMerge %121 None + OpBranchConditional %120 %122 %121 + %122 = OpLabel + %124 = OpLoad %v3float %color + %125 = OpCompositeExtract %GammaTransferParams %params_0 3 + %123 = OpFunctionCall %v3float %gammaCorrection %124 %125 + OpStore %color %123 + %126 = OpCompositeExtract %mat3v3float %params_0 5 + %127 = OpLoad %v3float %color + %128 = OpMatrixTimesVector %v3float %126 %127 + OpStore %color %128 + %130 = OpLoad %v3float %color + %131 = OpCompositeExtract %GammaTransferParams %params_0 4 + %129 = OpFunctionCall %v3float %gammaCorrection %130 %131 + OpStore %color %129 + OpBranch %121 + %121 = OpLabel + %132 = OpLoad %v3float %color + %133 = OpCompositeExtract %float %132 0 + %134 = OpCompositeExtract %float %132 1 + %135 = OpCompositeExtract %float %132 2 + %136 = OpCompositeConstruct %v4float %133 %134 %135 %float_1 + OpReturnValue %136 + OpFunctionEnd +%textureSampleBaseClampToEdge_7c04e6 = OpFunction %void None %137 + %140 = OpLabel + %arg_2 = OpVariable %_ptr_Function_v2float Function %87 + %res = OpVariable %_ptr_Function_v4float Function %5 + OpStore %arg_2 %87 + %143 = OpLoad %11 %arg_0 + %144 = OpLoad %11 %ext_tex_plane_1 + %145 = OpLoad %24 %arg_1 + %146 = OpLoad %v2float %arg_2 + %149 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0 + %150 = OpLoad %ExternalTextureParams %149 + %142 = OpFunctionCall %v4float %textureSampleExternal %143 %144 %145 %146 %150 + OpStore %res %142 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %153 + %155 = OpLabel + %156 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %137 + %158 = OpLabel + %159 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %159 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %137 + %161 = OpLabel + %162 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %137 + %164 = OpLabel + %165 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.wgsl new file mode 100644 index 0000000000..ec8947ef5b --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.wgsl @@ -0,0 +1,24 @@ +@group(1) @binding(0) var arg_0 : texture_external; + +@group(1) @binding(1) var arg_1 : sampler; + +fn textureSampleBaseClampToEdge_7c04e6() { + var arg_2 = vec2(); + var res : vec4 = textureSampleBaseClampToEdge(arg_0, arg_1, arg_2); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + textureSampleBaseClampToEdge_7c04e6(); + return vec4(); +} + +@fragment +fn fragment_main() { + textureSampleBaseClampToEdge_7c04e6(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureSampleBaseClampToEdge_7c04e6(); +} diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl new file mode 100644 index 0000000000..54192fcd79 --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl @@ -0,0 +1,46 @@ +// Copyright 2022 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +@group(1) @binding(0) var arg_0: texture_2d; +@group(1) @binding(1) var arg_1: sampler; + +// fn textureSampleBaseClampToEdge(texture: texture_2d, sampler: sampler, coords: vec2) -> vec4 +fn textureSampleBaseClampToEdge_9ca02c() { + var arg_2 = vec2(); + var res: vec4 = textureSampleBaseClampToEdge(arg_0, arg_1, arg_2); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + textureSampleBaseClampToEdge_9ca02c(); + return vec4(); +} + +@fragment +fn fragment_main() { + textureSampleBaseClampToEdge_9ca02c(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureSampleBaseClampToEdge_9ca02c(); +} diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..870d5d4c46 --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.dxc.hlsl @@ -0,0 +1,43 @@ +Texture2D arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +float4 tint_textureSampleBaseClampToEdge(Texture2D t, SamplerState s, float2 coord) { + int3 tint_tmp; + t.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z); + const float2 dims = float2(tint_tmp.xy); + const float2 half_texel = ((0.5f).xx / dims); + const float2 clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return t.SampleLevel(s, clamped, 0.0f); +} + +void textureSampleBaseClampToEdge_9ca02c() { + float2 arg_2 = (0.0f).xx; + float4 res = tint_textureSampleBaseClampToEdge(arg_0, arg_1, arg_2); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureSampleBaseClampToEdge_9ca02c(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + textureSampleBaseClampToEdge_9ca02c(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureSampleBaseClampToEdge_9ca02c(); + return; +} diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..870d5d4c46 --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.fxc.hlsl @@ -0,0 +1,43 @@ +Texture2D arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +float4 tint_textureSampleBaseClampToEdge(Texture2D t, SamplerState s, float2 coord) { + int3 tint_tmp; + t.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z); + const float2 dims = float2(tint_tmp.xy); + const float2 half_texel = ((0.5f).xx / dims); + const float2 clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return t.SampleLevel(s, clamped, 0.0f); +} + +void textureSampleBaseClampToEdge_9ca02c() { + float2 arg_2 = (0.0f).xx; + float4 res = tint_textureSampleBaseClampToEdge(arg_0, arg_1, arg_2); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureSampleBaseClampToEdge_9ca02c(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + textureSampleBaseClampToEdge_9ca02c(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureSampleBaseClampToEdge_9ca02c(); + return; +} diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.glsl new file mode 100644 index 0000000000..9a5c5ef971 --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.glsl @@ -0,0 +1,82 @@ +#version 310 es + + +vec4 tint_textureSampleBaseClampToEdge(highp sampler2D t_1, highp sampler2D t_s, vec2 coord) { + vec2 dims = vec2(textureSize(t_1, 0)); + vec2 half_texel = (vec2(0.5f) / dims); + vec2 clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return textureLod(t_s, clamped, 0.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D arg_0_arg_1; +void textureSampleBaseClampToEdge_9ca02c() { + vec2 arg_2 = vec2(0.0f); + vec4 res = tint_textureSampleBaseClampToEdge(arg_0_1, arg_0_arg_1, arg_2); +} + +vec4 vertex_main() { + textureSampleBaseClampToEdge_9ca02c(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + + +vec4 tint_textureSampleBaseClampToEdge(highp sampler2D t_1, highp sampler2D t_s, vec2 coord) { + vec2 dims = vec2(textureSize(t_1, 0)); + vec2 half_texel = (vec2(0.5f) / dims); + vec2 clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return textureLod(t_s, clamped, 0.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D arg_0_arg_1; +void textureSampleBaseClampToEdge_9ca02c() { + vec2 arg_2 = vec2(0.0f); + vec4 res = tint_textureSampleBaseClampToEdge(arg_0_1, arg_0_arg_1, arg_2); +} + +void fragment_main() { + textureSampleBaseClampToEdge_9ca02c(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + + +vec4 tint_textureSampleBaseClampToEdge(highp sampler2D t_1, highp sampler2D t_s, vec2 coord) { + vec2 dims = vec2(textureSize(t_1, 0)); + vec2 half_texel = (vec2(0.5f) / dims); + vec2 clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return textureLod(t_s, clamped, 0.0f); +} + +uniform highp sampler2D arg_0_1; +uniform highp sampler2D arg_0_arg_1; +void textureSampleBaseClampToEdge_9ca02c() { + vec2 arg_2 = vec2(0.0f); + vec4 res = tint_textureSampleBaseClampToEdge(arg_0_1, arg_0_arg_1, arg_2); +} + +void compute_main() { + textureSampleBaseClampToEdge_9ca02c(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.msl new file mode 100644 index 0000000000..3b64f958c3 --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.msl @@ -0,0 +1,41 @@ +#include + +using namespace metal; +float4 tint_textureSampleBaseClampToEdge(texture2d t, sampler s, float2 coord) { + float2 const dims = float2(int2(t.get_width(0), t.get_height(0))); + float2 const half_texel = (float2(0.5f) / dims); + float2 const clamped = clamp(coord, half_texel, (1.0f - half_texel)); + return t.sample(s, clamped, level(0.0f)); +} + +void textureSampleBaseClampToEdge_9ca02c(texture2d tint_symbol_1, sampler tint_symbol_2) { + float2 arg_2 = float2(0.0f); + float4 res = tint_textureSampleBaseClampToEdge(tint_symbol_1, tint_symbol_2, arg_2); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner(texture2d tint_symbol_3, sampler tint_symbol_4) { + textureSampleBaseClampToEdge_9ca02c(tint_symbol_3, tint_symbol_4); + return float4(0.0f); +} + +vertex tint_symbol vertex_main(texture2d tint_symbol_5 [[texture(0)]], sampler tint_symbol_6 [[sampler(0)]]) { + float4 const inner_result = vertex_main_inner(tint_symbol_5, tint_symbol_6); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main(texture2d tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureSampleBaseClampToEdge_9ca02c(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureSampleBaseClampToEdge_9ca02c(tint_symbol_9, tint_symbol_10); + return; +} + diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.spvasm new file mode 100644 index 0000000000..a130f4097e --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.spvasm @@ -0,0 +1,114 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 65 +; Schema: 0 + OpCapability Shader + OpCapability ImageQuery + %31 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %arg_0 "arg_0" + OpName %arg_1 "arg_1" + OpName %tint_textureSampleBaseClampToEdge "tint_textureSampleBaseClampToEdge" + OpName %t "t" + OpName %s "s" + OpName %coord "coord" + OpName %textureSampleBaseClampToEdge_9ca02c "textureSampleBaseClampToEdge_9ca02c" + OpName %arg_2 "arg_2" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + OpDecorate %arg_0 DescriptorSet 1 + OpDecorate %arg_0 Binding 0 + OpDecorate %arg_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %11 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %14 = OpTypeSampler +%_ptr_UniformConstant_14 = OpTypePointer UniformConstant %14 + %arg_1 = OpVariable %_ptr_UniformConstant_14 UniformConstant + %v2float = OpTypeVector %float 2 + %15 = OpTypeFunction %v4float %11 %14 %v2float + %int = OpTypeInt 32 1 + %v2int = OpTypeVector %int 2 + %26 = OpConstantNull %int + %float_0_5 = OpConstant %float 0.5 + %28 = OpConstantComposite %v2float %float_0_5 %float_0_5 + %float_1 = OpConstant %float 1 +%_ptr_Function_v2float = OpTypePointer Function %v2float + %36 = OpConstantNull %v2float + %39 = OpTypeSampledImage %11 + %void = OpTypeVoid + %41 = OpTypeFunction %void +%_ptr_Function_v4float = OpTypePointer Function %v4float + %52 = OpTypeFunction %v4float +%tint_textureSampleBaseClampToEdge = OpFunction %v4float None %15 + %t = OpFunctionParameter %11 + %s = OpFunctionParameter %14 + %coord = OpFunctionParameter %v2float + %21 = OpLabel + %34 = OpVariable %_ptr_Function_v2float Function %36 + %23 = OpImageQuerySizeLod %v2int %t %26 + %22 = OpConvertSToF %v2float %23 + %29 = OpFDiv %v2float %28 %22 + %37 = OpCompositeConstruct %v2float %float_1 %float_1 + %33 = OpFSub %v2float %37 %29 + %30 = OpExtInst %v2float %31 NClamp %coord %29 %33 + %40 = OpSampledImage %39 %t %s + %38 = OpImageSampleExplicitLod %v4float %40 %30 Lod %8 + OpReturnValue %38 + OpFunctionEnd +%textureSampleBaseClampToEdge_9ca02c = OpFunction %void None %41 + %44 = OpLabel + %arg_2 = OpVariable %_ptr_Function_v2float Function %36 + %res = OpVariable %_ptr_Function_v4float Function %5 + OpStore %arg_2 %36 + %47 = OpLoad %11 %arg_0 + %48 = OpLoad %14 %arg_1 + %49 = OpLoad %v2float %arg_2 + %46 = OpFunctionCall %v4float %tint_textureSampleBaseClampToEdge %47 %48 %49 + OpStore %res %46 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %52 + %54 = OpLabel + %55 = OpFunctionCall %void %textureSampleBaseClampToEdge_9ca02c + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %41 + %57 = OpLabel + %58 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %58 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %41 + %60 = OpLabel + %61 = OpFunctionCall %void %textureSampleBaseClampToEdge_9ca02c + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %41 + %63 = OpLabel + %64 = OpFunctionCall %void %textureSampleBaseClampToEdge_9ca02c + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.wgsl new file mode 100644 index 0000000000..a70dd354f3 --- /dev/null +++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.wgsl @@ -0,0 +1,24 @@ +@group(1) @binding(0) var arg_0 : texture_2d; + +@group(1) @binding(1) var arg_1 : sampler; + +fn textureSampleBaseClampToEdge_9ca02c() { + var arg_2 = vec2(); + var res : vec4 = textureSampleBaseClampToEdge(arg_0, arg_1, arg_2); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + textureSampleBaseClampToEdge_9ca02c(); + return vec4(); +} + +@fragment +fn fragment_main() { + textureSampleBaseClampToEdge_9ca02c(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureSampleBaseClampToEdge_9ca02c(); +} diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.dxc.hlsl index 20a6a9824d..42293b9330 100644 --- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.dxc.hlsl @@ -1,3 +1,7 @@ +builtins/gen/var/textureSampleLevel/979816.wgsl:29:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, arg_2); + ^^^^^^^^^^^^^^^^^^ + struct GammaTransferParams { float G; float A; diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.fxc.hlsl index 20a6a9824d..42293b9330 100644 --- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.fxc.hlsl @@ -1,3 +1,7 @@ +builtins/gen/var/textureSampleLevel/979816.wgsl:29:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, arg_2); + ^^^^^^^^^^^^^^^^^^ + struct GammaTransferParams { float G; float A; diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl index 168f660b07..45fab1723e 100644 --- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl @@ -1,3 +1,7 @@ +builtins/gen/var/textureSampleLevel/979816.wgsl:29:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, arg_2); + ^^^^^^^^^^^^^^^^^^ + #version 310 es struct GammaTransferParams { diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.msl b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.msl index 96222138d0..efa8279e17 100644 --- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.msl +++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.msl @@ -1,3 +1,7 @@ +builtins/gen/var/textureSampleLevel/979816.wgsl:29:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, arg_2); + ^^^^^^^^^^^^^^^^^^ + #include using namespace metal; diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.spvasm index accaf68e38..4d772dc663 100644 --- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.spvasm @@ -1,3 +1,7 @@ +builtins/gen/var/textureSampleLevel/979816.wgsl:29:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, arg_2); + ^^^^^^^^^^^^^^^^^^ + ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.wgsl index 3c31778c28..1b4da99331 100644 --- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.wgsl +++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.wgsl @@ -1,3 +1,7 @@ +builtins/gen/var/textureSampleLevel/979816.wgsl:29:24 warning: use of deprecated builtin + var res: vec4 = textureSampleLevel(arg_0, arg_1, arg_2); + ^^^^^^^^^^^^^^^^^^ + @group(1) @binding(0) var arg_0 : texture_external; @group(1) @binding(1) var arg_1 : sampler;