Implement textureGather, textureGatherCompare All writers implemented, along with resolving and validation. TODO: SPIR-V Reader. Bug: tint:1330 Change-Id: I8ba2f6023749474f80efb8a5422ac187e6c73a69 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/71820 Reviewed-by: David Neto <dneto@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Kokoro: Ben Clayton <bclayton@google.com>
diff --git a/docs/origin-trial-changes.md b/docs/origin-trial-changes.md index 8ba5154..09f66a3 100644 --- a/docs/origin-trial-changes.md +++ b/docs/origin-trial-changes.md
@@ -14,6 +14,7 @@ ### New Features +* New texture gather builtins: `textureGather()` and `textureGatherCompare()`. [tint:1330](https://crbug.com/tint/1330) * Shadowing is now fully supported. [tint:819](https://crbug.com/tint/819) * The `dot()` builtin now supports integer vector types. * Identifiers can now start with a single leading underscore. [tint:1292](https://crbug.com/tint/1292)
diff --git a/src/ast/intrinsic_texture_helper_test.cc b/src/ast/intrinsic_texture_helper_test.cc index 04c3ee0..76c9a73 100644 --- a/src/ast/intrinsic_texture_helper_test.cc +++ b/src/ast/intrinsic_texture_helper_test.cc
@@ -127,7 +127,7 @@ out << "<unused>"; } out << "\n"; - out << "access: " << data.access << "\n"; + out << "access: " << data.access << "\n"; out << "image_format: " << data.image_format << "\n"; out << "texture_dimension: " << data.texture_dimension << "\n"; out << "texture_data_type: " << data.texture_data_type << "\n"; @@ -461,6 +461,349 @@ "textureDimensions", [](ProgramBuilder* b) { return b->ExprList("texture"); }, }, + + { + ValidTextureOverload::kGather2dF32, + "textureGather(component : i32,\n" + " t : texture_2d<T>,\n" + " s : sampler,\n" + " coords : vec2<f32>) -> vec4<T>", + TextureKind::kRegular, + ast::SamplerKind::kSampler, + ast::TextureDimension::k2d, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList(0, // component + "texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f)); // coords + }, + }, + { + ValidTextureOverload::kGather2dOffsetF32, + "textureGather(component : i32,\n" + " t : texture_2d<T>,\n" + " s : sampler,\n" + " coords : vec2<f32>,\n" + " offset : vec2<i32>) -> vec4<T>", + TextureKind::kRegular, + ast::SamplerKind::kSampler, + ast::TextureDimension::k2d, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList(0, // component + "texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f), // coords + b->vec2<i32>(3, 4)); // offset + }, + }, + { + ValidTextureOverload::kGather2dArrayF32, + "textureGather(component : i32,\n" + " t : texture_2d_array<T>,\n" + " s : sampler,\n" + " coords : vec2<f32>,\n" + " array_index : i32) -> vec4<T>", + TextureKind::kRegular, + ast::SamplerKind::kSampler, + ast::TextureDimension::k2dArray, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList(0, // component + "texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f), // coords + 3); // array index + }, + }, + { + ValidTextureOverload::kGather2dArrayOffsetF32, + "textureGather(component : i32,\n" + " t : texture_2d_array<T>,\n" + " s : sampler,\n" + " coords : vec2<f32>,\n" + " array_index : i32,\n" + " offset : vec2<i32>) -> vec4<T>", + TextureKind::kRegular, + ast::SamplerKind::kSampler, + ast::TextureDimension::k2dArray, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList(0, // component + "texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f), // coords + 3, // array_index + b->vec2<i32>(4, 5)); // offset + }, + }, + { + ValidTextureOverload::kGatherCubeF32, + "textureGather(component : i32,\n" + " t : texture_cube<T>,\n" + " s : sampler,\n" + " coords : vec3<f32>) -> vec4<T>", + TextureKind::kRegular, + ast::SamplerKind::kSampler, + ast::TextureDimension::kCube, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList(0, // component + "texture", // t + "sampler", // s + b->vec3<f32>(1.f, 2.f, 3.f)); // coords + }, + }, + { + ValidTextureOverload::kGatherCubeArrayF32, + "textureGather(component : i32,\n" + " t : texture_cube_array<T>,\n" + " s : sampler,\n" + " coords : vec3<f32>,\n" + " array_index : i32) -> vec4<T>", + TextureKind::kRegular, + ast::SamplerKind::kSampler, + ast::TextureDimension::kCubeArray, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList(0, // component + "texture", // t + "sampler", // s + b->vec3<f32>(1.f, 2.f, 3.f), // coords + 4); // array_index + }, + }, + { + ValidTextureOverload::kGatherDepth2dF32, + "textureGather(t : texture_depth_2d,\n" + " s : sampler,\n" + " coords : vec2<f32>) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kSampler, + ast::TextureDimension::k2d, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f)); // coords + }, + }, + { + ValidTextureOverload::kGatherDepth2dOffsetF32, + "textureGather(t : texture_depth_2d,\n" + " s : sampler,\n" + " coords : vec2<f32>,\n" + " offset : vec2<i32>) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kSampler, + ast::TextureDimension::k2d, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f), // coords + b->vec2<i32>(3, 4)); // offset + }, + }, + { + ValidTextureOverload::kGatherDepth2dArrayF32, + "textureGather(t : texture_depth_2d_array,\n" + " s : sampler,\n" + " coords : vec2<f32>,\n" + " array_index : i32) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kSampler, + ast::TextureDimension::k2dArray, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f), // coords + 3); // array_index + }, + }, + { + ValidTextureOverload::kGatherDepth2dArrayOffsetF32, + "textureGather(t : texture_depth_2d_array,\n" + " s : sampler,\n" + " coords : vec2<f32>,\n" + " array_index : i32,\n" + " offset : vec2<i32>) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kSampler, + ast::TextureDimension::k2dArray, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f), // coords + 3, // array_index + b->vec2<i32>(4, 5)); // offset + }, + }, + { + ValidTextureOverload::kGatherDepthCubeF32, + "textureGather(t : texture_depth_cube,\n" + " s : sampler,\n" + " coords : vec3<f32>) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kSampler, + ast::TextureDimension::kCube, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec3<f32>(1.f, 2.f, 3.f)); // coords + }, + }, + { + ValidTextureOverload::kGatherDepthCubeArrayF32, + "textureGather(t : texture_depth_cube_array,\n" + " s : sampler,\n" + " coords : vec3<f32>,\n" + " array_index : i32) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kSampler, + ast::TextureDimension::kCubeArray, + TextureDataType::kF32, + "textureGather", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec3<f32>(1.f, 2.f, 3.f), // coords + 4); // array_index + }, + }, + { + ValidTextureOverload::kGatherCompareDepth2dF32, + "textureGatherCompare(t : texture_depth_2d,\n" + " s : sampler_comparison,\n" + " coords : vec2<f32>,\n" + " depth_ref : f32) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kComparisonSampler, + ast::TextureDimension::k2d, + TextureDataType::kF32, + "textureGatherCompare", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f), // coords + 3.f); // depth_ref + }, + }, + { + ValidTextureOverload::kGatherCompareDepth2dOffsetF32, + "textureGatherCompare(t : texture_depth_2d,\n" + " s : sampler_comparison,\n" + " coords : vec2<f32>,\n" + " depth_ref : f32,\n" + " offset : vec2<i32>) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kComparisonSampler, + ast::TextureDimension::k2d, + TextureDataType::kF32, + "textureGatherCompare", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f), // coords + 3.f, // depth_ref + b->vec2<i32>(4, 5)); // offset + }, + }, + { + ValidTextureOverload::kGatherCompareDepth2dArrayF32, + "textureGatherCompare(t : texture_depth_2d_array,\n" + " s : sampler_comparison,\n" + " coords : vec2<f32>,\n" + " array_index : i32,\n" + " depth_ref : f32) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kComparisonSampler, + ast::TextureDimension::k2dArray, + TextureDataType::kF32, + "textureGatherCompare", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f), // coords + 3, // array_index + 4.f); // depth_ref + }, + }, + { + ValidTextureOverload::kGatherCompareDepth2dArrayOffsetF32, + "textureGatherCompare(t : texture_depth_2d_array,\n" + " s : sampler_comparison,\n" + " coords : vec2<f32>,\n" + " array_index : i32,\n" + " depth_ref : f32,\n" + " offset : vec2<i32>) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kComparisonSampler, + ast::TextureDimension::k2dArray, + TextureDataType::kF32, + "textureGatherCompare", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec2<f32>(1.f, 2.f), // coords + 3, // array_index + 4.f, // depth_ref + b->vec2<i32>(5, 6)); // offset + }, + }, + { + ValidTextureOverload::kGatherCompareDepthCubeF32, + "textureGatherCompare(t : texture_depth_cube,\n" + " s : sampler_comparison,\n" + " coords : vec3<f32>,\n" + " depth_ref : f32) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kComparisonSampler, + ast::TextureDimension::kCube, + TextureDataType::kF32, + "textureGatherCompare", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec3<f32>(1.f, 2.f, 3.f), // coords + 4.f); // depth_ref + }, + }, + { + ValidTextureOverload::kGatherCompareDepthCubeArrayF32, + "textureGatherCompare(t : texture_depth_cube_array,\n" + " s : sampler_comparison,\n" + " coords : vec3<f32>,\n" + " array_index : i32,\n" + " depth_ref : f32) -> vec4<f32>", + TextureKind::kDepth, + ast::SamplerKind::kComparisonSampler, + ast::TextureDimension::kCubeArray, + TextureDataType::kF32, + "textureGatherCompare", + [](ProgramBuilder* b) { + return b->ExprList("texture", // t + "sampler", // s + b->vec3<f32>(1.f, 2.f, 3.f), // coords + 4, // array_index + 5.f); // depth_ref + }, + }, { ValidTextureOverload::kNumLayers2dArray, "textureNumLayers(t : texture_2d_array<f32>) -> i32",
diff --git a/src/ast/intrinsic_texture_helper_test.h b/src/ast/intrinsic_texture_helper_test.h index ee517a1..64b995a 100644 --- a/src/ast/intrinsic_texture_helper_test.h +++ b/src/ast/intrinsic_texture_helper_test.h
@@ -65,6 +65,24 @@ kDimensionsStorageWO2d, kDimensionsStorageWO2dArray, kDimensionsStorageWO3d, + kGather2dF32, + kGather2dOffsetF32, + kGather2dArrayF32, + kGather2dArrayOffsetF32, + kGatherCubeF32, + kGatherCubeArrayF32, + kGatherDepth2dF32, + kGatherDepth2dOffsetF32, + kGatherDepth2dArrayF32, + kGatherDepth2dArrayOffsetF32, + kGatherDepthCubeF32, + kGatherDepthCubeArrayF32, + kGatherCompareDepth2dF32, + kGatherCompareDepth2dOffsetF32, + kGatherCompareDepth2dArrayF32, + kGatherCompareDepth2dArrayOffsetF32, + kGatherCompareDepthCubeF32, + kGatherCompareDepthCubeArrayF32, kNumLayers2dArray, kNumLayersCubeArray, kNumLayersDepth2dArray,
diff --git a/src/intrinsic_table.inl b/src/intrinsic_table.inl index ea72274..1981296 100644 --- a/src/intrinsic_table.inl +++ b/src/intrinsic_table.inl
@@ -1669,18 +1669,18 @@ /* [27] */ 29, /* [28] */ 0, /* [29] */ 1, - /* [30] */ 30, + /* [30] */ 8, /* [31] */ 0, - /* [32] */ 1, - /* [33] */ 28, + /* [32] */ 0, + /* [33] */ 30, /* [34] */ 0, /* [35] */ 1, - /* [36] */ 27, + /* [36] */ 28, /* [37] */ 0, /* [38] */ 1, - /* [39] */ 8, + /* [39] */ 27, /* [40] */ 0, - /* [41] */ 0, + /* [41] */ 1, /* [42] */ 30, /* [43] */ 4, /* [44] */ 9, @@ -1720,62 +1720,62 @@ /* [78] */ 8, /* [79] */ 0, /* [80] */ 3, - /* [81] */ 7, - /* [82] */ 2, - /* [83] */ 18, + /* [81] */ 15, + /* [82] */ 0, + /* [83] */ 6, /* [84] */ 2, - /* [85] */ 5, - /* [86] */ 3, - /* [87] */ 6, + /* [85] */ 18, + /* [86] */ 2, + /* [87] */ 7, /* [88] */ 2, /* [89] */ 5, - /* [90] */ 2, - /* [91] */ 17, + /* [90] */ 3, + /* [91] */ 5, /* [92] */ 2, - /* [93] */ 6, - /* [94] */ 3, - /* [95] */ 19, - /* [96] */ 2, - /* [97] */ 16, + /* [93] */ 17, + /* [94] */ 2, + /* [95] */ 6, + /* [96] */ 3, + /* [97] */ 19, /* [98] */ 2, - /* [99] */ 20, + /* [99] */ 16, /* [100] */ 2, - /* [101] */ 33, - /* [102] */ 0, - /* [103] */ 35, + /* [101] */ 20, + /* [102] */ 2, + /* [103] */ 33, /* [104] */ 0, - /* [105] */ 7, - /* [106] */ 3, - /* [107] */ 7, - /* [108] */ 4, - /* [109] */ 15, + /* [105] */ 5, + /* [106] */ 0, + /* [107] */ 35, + /* [108] */ 0, + /* [109] */ 17, /* [110] */ 0, /* [111] */ 7, - /* [112] */ 0, - /* [113] */ 16, - /* [114] */ 0, - /* [115] */ 17, + /* [112] */ 3, + /* [113] */ 7, + /* [114] */ 4, + /* [115] */ 7, /* [116] */ 0, - /* [117] */ 18, + /* [117] */ 16, /* [118] */ 0, - /* [119] */ 21, + /* [119] */ 18, /* [120] */ 0, - /* [121] */ 19, + /* [121] */ 21, /* [122] */ 0, - /* [123] */ 20, + /* [123] */ 19, /* [124] */ 0, - /* [125] */ 15, - /* [126] */ 2, - /* [127] */ 5, - /* [128] */ 0, - /* [129] */ 13, - /* [130] */ 22, - /* [131] */ 23, - /* [132] */ 26, - /* [133] */ 24, - /* [134] */ 25, - /* [135] */ 31, - /* [136] */ 14, + /* [125] */ 20, + /* [126] */ 0, + /* [127] */ 15, + /* [128] */ 2, + /* [129] */ 22, + /* [130] */ 23, + /* [131] */ 24, + /* [132] */ 25, + /* [133] */ 26, + /* [134] */ 13, + /* [135] */ 14, + /* [136] */ 31, /* [137] */ 32, /* [138] */ 34, }; @@ -1790,17 +1790,17 @@ { /* [0] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[93], }, { /* [1] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[134], }, { /* [2] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [3] */ @@ -1810,62 +1810,62 @@ { /* [4] */ /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [5] */ /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [6] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[89], }, { /* [7] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[99], }, { /* [8] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[134], }, { /* [9] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [10] */ /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [11] */ /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [12] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[89], }, { /* [13] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[93], }, { /* [14] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[134], }, { /* [15] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [16] */ @@ -1874,28 +1874,28 @@ }, { /* [17] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[89], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [18] */ - /* usage */ ParameterUsage::kDdy, + /* usage */ ParameterUsage::kOffset, /* matcher indices */ &kMatcherIndices[89], }, { /* [19] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[93], }, { /* [20] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[134], }, { /* [21] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [22] */ @@ -1904,28 +1904,28 @@ }, { /* [23] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, { /* [24] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[89], }, { /* [25] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[101], }, { /* [26] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[134], }, { /* [27] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[83], }, { /* [28] */ @@ -1934,118 +1934,118 @@ }, { /* [29] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[83], }, { /* [30] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[83], }, { /* [31] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], }, { /* [32] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[109], }, { /* [33] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [34] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [35] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [35] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[87], - }, - { /* [36] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], }, { /* [37] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[85], }, { /* [38] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], + /* matcher indices */ &kMatcherIndices[134], }, { /* [39] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[83], }, { /* [40] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[83], }, { /* [41] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[83], }, { /* [42] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[95], }, { /* [43] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[130], }, { /* [44] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[134], }, { /* [45] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[91], }, { /* [46] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [47] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [48] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[89], }, { /* [49] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[130], }, { /* [50] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], + /* matcher indices */ &kMatcherIndices[135], }, { /* [51] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [52] */ @@ -2060,22 +2060,22 @@ { /* [54] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[89], }, { /* [55] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[130], }, { /* [56] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[135], }, { /* [57] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [58] */ @@ -2084,28 +2084,28 @@ }, { /* [59] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [60] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[89], }, { /* [61] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[130], }, { /* [62] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[135], }, { /* [63] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[91], }, { /* [64] */ @@ -2114,983 +2114,983 @@ }, { /* [65] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [66] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], - }, - { - /* [67] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [68] */ - /* usage */ ParameterUsage::kCoords, + /* usage */ ParameterUsage::kOffset, /* matcher indices */ &kMatcherIndices[89], }, { + /* [67] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [68] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { /* [69] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], }, { /* [70] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [71] */ + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [72] */ + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [73] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [74] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [75] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [76] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [77] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [78] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[99], }, { - /* [72] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [73] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [74] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [75] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [76] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [77] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [78] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { /* [79] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [80] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [81] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [82] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [83] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [84] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [85] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [86] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [87] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [88] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [89] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [90] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [91] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [92] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [93] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [94] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [95] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [96] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [97] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], - }, - { - /* [98] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [99] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [100] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [101] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [102] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], - }, - { - /* [103] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [104] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [105] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [106] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[134], }, { - /* [107] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [108] */ + /* [80] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [109] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [110] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [111] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[91], }, { - /* [112] */ - /* usage */ ParameterUsage::kSampler, + /* [81] */ + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [82] */ + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [83] */ + /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[129], }, { - /* [113] */ + /* [84] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [85] */ /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [86] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [87] */ + /* usage */ ParameterUsage::kOffset, /* matcher indices */ &kMatcherIndices[89], }, { - /* [114] */ + /* [88] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [89] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [90] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [91] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [115] */ + /* [92] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [93] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [94] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [95] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [96] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [97] */ /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [98] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [99] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [100] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [101] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [102] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [103] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [104] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[125], + }, + { + /* [105] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [106] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [107] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [108] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [109] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [110] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [111] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [112] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [113] */ + /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[85], }, { + /* [114] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [115] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { /* [116] */ - /* usage */ ParameterUsage::kTexture, + /* usage */ ParameterUsage::kDdx, /* matcher indices */ &kMatcherIndices[83], }, { /* [117] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [118] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [119] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [120] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [121] */ - /* usage */ ParameterUsage::kTexture, + /* usage */ ParameterUsage::kDdy, /* matcher indices */ &kMatcherIndices[83], }, { - /* [122] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [123] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [124] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [125] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [126] */ + /* [118] */ /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [119] */ + /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[134], }, { - /* [127] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], - }, - { - /* [128] */ + /* [120] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [129] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [130] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [131] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[91], }, { - /* [132] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [133] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [134] */ + /* [121] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [135] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], + /* [122] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], }, { - /* [136] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[95], - }, - { - /* [137] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [138] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [139] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [140] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [141] */ + /* [123] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[130], }, { - /* [142] */ + /* [124] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], + /* matcher indices */ &kMatcherIndices[135], }, { - /* [143] */ + /* [125] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [144] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [145] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [146] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[91], }, { - /* [147] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [148] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [149] */ + /* [126] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [150] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [151] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [152] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], - }, - { - /* [153] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [154] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [155] */ + /* [127] */ /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { - /* [156] */ + /* [128] */ /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[97], + }, + { + /* [129] */ + /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[134], }, { - /* [157] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], - }, - { - /* [158] */ + /* [130] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { - /* [159] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [160] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [161] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], - }, - { - /* [162] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [163] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [164] */ + /* [131] */ /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[83], }, { - /* [165] */ + /* [132] */ /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[83], }, { - /* [166] */ + /* [133] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [134] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[109], }, { - /* [167] */ + /* [135] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[134], }, { - /* [168] */ + /* [136] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { - /* [169] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [170] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [171] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[57], - }, - { - /* [172] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [173] */ + /* [137] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [174] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[105], - }, - { - /* [175] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], - }, - { - /* [176] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], - }, - { - /* [177] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [178] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [179] */ + /* [138] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[99], }, { - /* [180] */ + /* [139] */ /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [140] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [141] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [142] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [143] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [144] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [145] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [146] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [147] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [148] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [149] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [150] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [151] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [152] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [153] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [154] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], + }, + { + /* [155] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [156] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [157] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [158] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [159] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [160] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [161] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [162] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [163] */ + /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[129], }, { - /* [181] */ + /* [164] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [165] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [166] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [167] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [168] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[99], + }, + { + /* [169] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [170] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [171] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [172] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [173] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [174] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [175] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [176] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [177] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [178] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], + }, + { + /* [179] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [180] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [181] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [182] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], }, { /* [183] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[85], }, { /* [184] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], + /* matcher indices */ &kMatcherIndices[134], }, { /* [185] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[83], }, { /* [186] */ - /* usage */ ParameterUsage::kDepthRef, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, { /* [187] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[95], }, { /* [188] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], }, { /* [189] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [190] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [191] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [192] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [193] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [194] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [195] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [196] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [197] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [198] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [199] */ + /* [192] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [193] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[101], + }, + { + /* [194] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [195] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [196] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [197] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [198] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[101], + }, + { + /* [199] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [200] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [201] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [202] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [203] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], + /* matcher indices */ &kMatcherIndices[132], }, { /* [204] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [205] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [206] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { /* [207] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [208] */ - /* usage */ ParameterUsage::kSampler, + /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[129], }, { /* [209] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [210] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], }, { /* [211] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [212] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [213] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [214] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [215] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [216] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [217] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [218] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, { - /* [219] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* [212] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], }, { - /* [220] */ + /* [213] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [214] */ /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [215] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [216] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [217] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[95], + }, + { + /* [218] */ + /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[129], }, { - /* [221] */ + /* [219] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [220] */ /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [221] */ + /* usage */ ParameterUsage::kOffset, /* matcher indices */ &kMatcherIndices[89], }, { /* [222] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [223] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], - }, - { - /* [224] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [225] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [226] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [227] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[95], - }, - { - /* [228] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [229] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [230] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [231] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[131], }, { - /* [232] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [233] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [234] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [235] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [236] */ + /* [223] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [237] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [238] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [239] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[134], }, { - /* [240] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [241] */ + /* [224] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [242] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [243] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[83], }, { - /* [244] */ - /* usage */ ParameterUsage::kSampler, + /* [225] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [226] */ + /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[129], }, { - /* [245] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [246] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [247] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [248] */ + /* [227] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[136], + /* matcher indices */ &kMatcherIndices[134], }, { - /* [249] */ + /* [228] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { - /* [250] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* [229] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { - /* [251] */ + /* [230] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[97], }, { - /* [252] */ + /* [231] */ /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [232] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [233] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [234] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[97], + }, + { + /* [235] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [236] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [237] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [238] */ + /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[129], }, { - /* [253] */ + /* [239] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [240] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [254] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [255] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[91], }, { - /* [256] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* [241] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { - /* [257] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [258] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [259] */ + /* [242] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[69], }, { + /* [243] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [244] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [245] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [246] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [247] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [248] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [249] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [250] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[57], + }, + { + /* [251] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [252] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [253] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[111], + }, + { + /* [254] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[99], + }, + { + /* [255] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [256] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [257] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [258] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [259] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { /* [260] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[83], }, { /* [261] */ @@ -3099,18 +3099,18 @@ }, { /* [262] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], }, { /* [263] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[45], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [264] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[91], }, { /* [265] */ @@ -3119,428 +3119,428 @@ }, { /* [266] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], }, { /* [267] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[113], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [268] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[91], }, { /* [269] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], }, { /* [270] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[99], }, { /* [271] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[134], }, { /* [272] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[91], }, { /* [273] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[75], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], }, { /* [274] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[101], }, { /* [275] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [276] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[72], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [277] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [278] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[85], }, { /* [279] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[66], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [280] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[83], }, { /* [281] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[95], }, { /* [282] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[45], }, { /* [283] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [284] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[89], }, { + /* [284] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { /* [285] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[60], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[113], }, { /* [286] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[93], }, { /* [287] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[105], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [288] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], }, { /* [289] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [290] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], }, { /* [291] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [292] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [293] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [294] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [295] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [296] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [297] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [298] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [299] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], - }, - { - /* [300] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[54], - }, - { - /* [301] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [302] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[105], - }, - { - /* [303] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[51], - }, - { - /* [304] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [305] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], - }, - { - /* [306] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[48], - }, - { - /* [307] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [308] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], - }, - { - /* [309] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [310] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [311] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [312] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[42], - }, - { - /* [313] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [314] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], - }, - { - /* [315] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[109], }, { - /* [316] */ + /* [295] */ /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [296] */ + /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [317] */ + /* [297] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, { - /* [318] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [319] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [320] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [321] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [322] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [323] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [324] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [325] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [326] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [327] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], - }, - { - /* [328] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [329] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [330] */ + /* [298] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [331] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [332] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [333] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[95], - }, - { - /* [334] */ - /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[129], }, { - /* [335] */ + /* [299] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [300] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[91], }, { - /* [336] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], - }, - { - /* [337] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [338] */ - /* usage */ ParameterUsage::kSampleIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [339] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [340] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [341] */ - /* usage */ ParameterUsage::kNone, + /* [301] */ + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { - /* [342] */ + /* [302] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[132], }, { - /* [343] */ + /* [303] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [304] */ /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [305] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [306] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [307] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [308] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [309] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [310] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], + }, + { + /* [311] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [312] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [313] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [314] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [315] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [316] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [317] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [318] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [319] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[123], + }, + { + /* [320] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [321] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [322] */ + /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[85], }, { - /* [344] */ - /* usage */ ParameterUsage::kSampleIndex, + /* [323] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [324] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [325] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [326] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], + }, + { + /* [327] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [328] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [329] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [330] */ + /* usage */ ParameterUsage::kComponent, /* matcher indices */ &kMatcherIndices[55], }, { + /* [331] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], + }, + { + /* [332] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [333] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [334] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], + }, + { + /* [335] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [336] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [337] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [338] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[99], + }, + { + /* [339] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [340] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [341] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [342] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [343] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [344] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { /* [345] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[75], }, { /* [346] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[55], }, { /* [347] */ - /* usage */ ParameterUsage::kCoords, + /* usage */ ParameterUsage::kValue, /* matcher indices */ &kMatcherIndices[87], }, { /* [348] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [349] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [350] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [351] */ @@ -3574,138 +3574,138 @@ }, { /* [357] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], }, { /* [358] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [359] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], }, { /* [360] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], }, { /* [361] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [362] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], }, { /* [363] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[72], }, { /* [364] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [365] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[89], }, { + /* [365] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[87], + }, + { /* [366] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[133], }, { /* [367] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], }, { /* [368] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kSampleIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [369] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[60], }, { /* [370] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], }, { /* [371] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[111], }, { /* [372] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[63], + /* matcher indices */ &kMatcherIndices[129], }, { /* [373] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], + /* matcher indices */ &kMatcherIndices[89], }, { /* [374] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[105], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [375] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], }, { /* [376] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [377] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [378] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[12], }, { /* [379] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[12], }, { /* [380] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[12], }, { /* [381] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[21], }, { /* [382] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [383] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [384] */ @@ -3720,12 +3720,12 @@ { /* [386] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [387] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[0], }, { /* [388] */ @@ -3739,183 +3739,183 @@ }, { /* [390] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[66], }, { /* [391] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[78], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[95], }, { /* [392] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[109], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[87], }, { /* [393] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[63], + }, + { + /* [394] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [395] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[111], + }, + { + /* [396] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[121], + }, + { + /* [397] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [398] */ + /* usage */ ParameterUsage::kSampleIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [399] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[119], + }, + { + /* [400] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[95], + }, + { + /* [401] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, { - /* [394] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [395] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [396] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], - }, - { - /* [397] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [398] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [399] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [400] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [401] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { /* [402] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [403] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [404] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[1], }, { /* [405] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], }, { /* [406] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [407] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [408] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[30], }, { /* [409] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[30], }, { /* [410] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [411] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], }, { /* [412] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], }, { /* [413] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [414] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[127], }, { /* [415] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [416] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[12], }, { /* [417] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[99], }, { /* [418] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [419] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], }, { /* [420] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[21], }, { /* [421] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [422] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[12], }, { /* [423] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[54], }, { /* [424] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[95], }, { /* [425] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[111], }, { /* [426] */ @@ -3930,637 +3930,637 @@ { /* [428] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[21], }, { /* [429] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], }, { /* [430] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [431] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], }, { /* [432] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[51], }, { /* [433] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[55], }, { /* [434] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[113], }, { /* [435] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [436] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [437] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[10], }, { /* [438] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [439] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [440] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[10], }, { /* [441] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [442] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[121], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [443] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[24], }, { /* [444] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* matcher indices */ &kMatcherIndices[97], }, { /* [445] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [446] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [447] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[48], }, { /* [448] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[113], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], }, { /* [449] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[113], }, { /* [450] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[85], }, { /* [451] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[134], }, { /* [452] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [453] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[42], }, { /* [454] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[109], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[95], }, { /* [455] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[113], }, { /* [456] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[113], + /* matcher indices */ &kMatcherIndices[81], }, { /* [457] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[55], }, { /* [458] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [459] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* matcher indices */ &kMatcherIndices[30], }, { /* [460] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [461] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], }, { /* [462] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[121], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [463] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[83], }, { /* [464] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[83], }, { /* [465] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [466] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [467] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [468] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[13], + /* matcher indices */ &kMatcherIndices[21], }, { /* [469] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [470] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [471] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [472] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [473] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], }, { /* [474] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [475] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [476] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[36], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [477] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[33], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [478] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[27], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [479] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[30], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [480] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [481] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [482] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [483] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [484] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [485] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[27], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [486] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[109], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [487] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[113], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [488] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[55], }, { /* [489] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [490] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[121], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], }, { /* [491] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [492] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [493] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [494] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [495] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[136], }, { /* [496] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], }, { /* [497] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[130], }, { /* [498] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [499] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[0], }, { /* [500] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [501] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[0], }, { /* [502] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [503] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[81], }, { /* [504] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [505] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[0], }, { /* [506] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [507] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], }, { /* [508] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [509] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[0], }, { /* [510] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[1], }, { /* [511] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[109], }, { /* [512] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[89], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [513] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[21], }, { /* [514] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[78], }, { /* [515] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[119], }, { /* [516] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [517] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[0], }, { /* [518] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [519] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[123], }, { /* [520] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [521] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[0], }, { /* [522] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [523] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[125], }, { /* [524] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [525] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[0], }, { /* [526] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [527] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], }, { /* [528] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [529] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], }, { /* [530] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [531] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[0], }, { /* [532] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [533] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [534] */ - /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[1], }, { + /* [533] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[125], + }, + { + /* [534] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], + }, + { /* [535] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], }, { /* [536] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], }, { /* [537] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], }, { /* [538] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[133], }, { /* [539] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[39], }, { /* [540] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[36], }, { /* [541] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[27], }, { /* [542] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[33], }, { /* [543] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], }, { /* [544] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[121], }, { /* [545] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[123], }, { /* [546] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[119], }, { /* [547] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[109], }, { /* [548] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], }, { /* [549] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[81], }, { /* [550] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[43], }, { /* [551] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[43], }, { /* [552] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[43], }, { /* [553] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[43], }, { /* [554] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[43], }, { /* [555] */ @@ -4575,146 +4575,551 @@ { /* [557] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[13], }, { /* [558] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [559] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [560] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [561] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [562] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[109], }, { /* [563] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[17], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[125], }, { /* [564] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], }, { /* [565] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], }, { /* [566] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[27], }, { /* [567] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[81], }, { /* [568] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], }, { /* [569] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[109], }, { /* [570] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[119], }, { /* [571] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[123], }, { /* [572] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[125], }, { /* [573] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], }, { /* [574] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], }, { /* [575] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], }, { /* [576] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], }, { /* [577] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[121], }, { /* [578] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[133], }, { /* [579] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[21], }, { /* [580] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], + /* matcher indices */ &kMatcherIndices[12], }, { /* [581] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[21], }, { /* [582] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [583] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [584] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[12], }, { /* [585] */ /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [586] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [587] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [588] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [589] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [590] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [591] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [592] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [593] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [594] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [595] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [596] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [597] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [598] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [599] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [600] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [601] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [602] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [603] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [604] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [605] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [606] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [607] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [608] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [609] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [610] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [611] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [612] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [613] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [614] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [615] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [616] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [617] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [618] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [619] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [620] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [621] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [622] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [623] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [624] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [625] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [626] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [627] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [628] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [629] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [630] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [631] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [632] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [633] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [634] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [635] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [636] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [637] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [638] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [639] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [640] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [641] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [642] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [643] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [644] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[17], + }, + { + /* [645] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [646] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [647] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [648] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [649] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [650] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [651] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [652] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [653] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [654] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [655] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [656] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [657] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[4], + }, + { + /* [658] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], + }, + { + /* [659] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[24], + }, + { + /* [660] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[10], + }, + { + /* [661] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[24], + }, + { + /* [662] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[10], + }, + { + /* [663] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [664] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [665] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [666] */ + /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[1], }, }; @@ -4723,17 +5128,17 @@ { /* [0] */ /* name */ "T", - /* matcher index */ kNoMatcher, + /* matcher index */ 36, }, { /* [1] */ /* name */ "T", - /* matcher index */ 36, + /* matcher index */ 37, }, { /* [2] */ /* name */ "T", - /* matcher index */ 37, + /* matcher index */ kNoMatcher, }, { /* [3] */ @@ -4781,9 +5186,9 @@ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[454], + /* parameters */ &kParameters[549], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -4793,9 +5198,9 @@ /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[392], + /* parameters */ &kParameters[503], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -4805,10 +5210,10 @@ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[456], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[548], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4817,10 +5222,10 @@ /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[448], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[507], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4829,10 +5234,10 @@ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[458], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[547], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4841,10 +5246,10 @@ /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[446], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[511], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4853,10 +5258,10 @@ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[460], - /* return matcher indices */ &kMatcherIndices[93], + /* parameters */ &kParameters[546], + /* return matcher indices */ &kMatcherIndices[95], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4865,10 +5270,10 @@ /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[444], - /* return matcher indices */ &kMatcherIndices[93], + /* parameters */ &kParameters[515], + /* return matcher indices */ &kMatcherIndices[95], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4877,10 +5282,10 @@ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[462], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[545], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4889,10 +5294,10 @@ /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[442], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[519], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4901,10 +5306,10 @@ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[464], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[533], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4913,10 +5318,10 @@ /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[440], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[523], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4925,10 +5330,10 @@ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[466], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[544], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4939,8 +5344,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[467], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[537], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4951,8 +5356,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[438], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[529], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4963,8 +5368,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[469], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[535], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4975,8 +5380,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[436], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[497], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4987,8 +5392,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[471], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[534], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4999,8 +5404,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[434], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[461], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5011,8 +5416,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[473], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[536], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5023,8 +5428,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[432], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[527], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5035,8 +5440,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[475], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[538], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5047,7 +5452,7 @@ /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[476], + /* parameters */ &kParameters[539], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5059,8 +5464,8 @@ /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[477], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[540], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5071,8 +5476,8 @@ /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[478], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[541], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5083,8 +5488,8 @@ /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[479], - /* return matcher indices */ &kMatcherIndices[93], + /* parameters */ &kParameters[542], + /* return matcher indices */ &kMatcherIndices[95], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5095,8 +5500,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[480], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[543], + /* return matcher indices */ &kMatcherIndices[89], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5107,8 +5512,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[219], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[270], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5119,8 +5524,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[166], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[138], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5131,8 +5536,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[131], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[143], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5143,8 +5548,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[25], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[19], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5155,8 +5560,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[235], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[246], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5167,8 +5572,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[86], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[183], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5179,8 +5584,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[227], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[234], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5191,8 +5596,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[71], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[193], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5203,7 +5608,7 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[215], + /* parameters */ &kParameters[226], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5215,7 +5620,7 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[76], + /* parameters */ &kParameters[208], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5227,7 +5632,7 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[81], + /* parameters */ &kParameters[73], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5239,1147 +5644,1147 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[43], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [39] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[222], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [40] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[203], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [41] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[357], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [42] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[414], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [43] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[417], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [44] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[338], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [45] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[286], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [46] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[118], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [47] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[450], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [48] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[278], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [49] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[444], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [50] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[274], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [51] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[429], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [52] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[266], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [53] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[262], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [54] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[148], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [55] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[405], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [56] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[258], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [57] */ + /* num parameters */ 4, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[330], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [58] */ + /* num parameters */ 5, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[153], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [59] */ + /* num parameters */ 5, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[133], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [60] */ + /* num parameters */ 6, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[31], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [61] */ + /* num parameters */ 4, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[318], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [62] */ + /* num parameters */ 5, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[103], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [63] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[360], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [64] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[218], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [65] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[314], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [66] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[93], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [67] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[375], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [68] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[302], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [69] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[345], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [70] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[363], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [71] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[242], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [72] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[390], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [73] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[393], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [74] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[369], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [75] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[250], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [76] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[423], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [77] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[432], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [78] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[447], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [79] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[282], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [80] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[453], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [81] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[567], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [82] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[568], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [83] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[569], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [84] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[570], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [85] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[571], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [86] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[572], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [87] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[573], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [88] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[574], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [89] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[575], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [90] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[576], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [91] */ + /* num parameters */ 3, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[456], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [92] */ + /* num parameters */ 3, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[411], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [93] */ + /* num parameters */ 4, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[294], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [94] */ + /* num parameters */ 3, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[399], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [95] */ + /* num parameters */ 3, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[396], + /* return matcher indices */ &kMatcherIndices[115], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [96] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[372], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [97] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[306], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [98] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[366], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [99] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[495], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [100] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[78], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [101] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[7], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [102] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[67], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [103] */ + /* num parameters */ 7, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[0], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [104] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[113], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [105] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[37], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [106] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[128], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [107] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[25], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [108] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[254], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [109] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[168], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [110] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[173], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [111] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[13], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [112] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[322], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [113] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[213], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [114] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[230], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [115] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[198], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [116] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[298], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [117] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[83], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [118] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[88], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [119] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[61], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [120] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[290], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [121] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[108], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [122] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[238], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [123] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[163], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [124] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[158], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [125] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[49], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [126] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[334], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [127] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[188], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [128] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[326], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [129] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[178], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [130] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[123], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [131] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[55], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [39] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[199], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [40] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[106], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [41] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[270], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [42] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[366], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [43] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[363], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [44] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[251], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [45] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[255], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [46] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[111], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [47] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[348], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [48] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[211], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [49] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[333], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [50] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[179], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [51] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[282], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [52] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[191], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [53] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[195], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [54] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[91], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [55] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[345], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [56] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[239], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [57] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[273], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [58] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[276], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [59] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[259], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [60] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[279], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [61] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[372], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [62] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[285], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [63] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[171], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [64] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[300], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [65] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[303], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [66] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[306], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [67] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[263], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [68] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[312], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [69] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[486], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [70] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[487], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [71] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[488], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [72] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[489], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [73] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[490], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [74] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[491], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [75] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[492], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [76] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[493], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [77] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[494], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [78] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[495], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [79] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[315], - /* return matcher indices */ &kMatcherIndices[111], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [80] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[267], - /* return matcher indices */ &kMatcherIndices[111], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [81] */ - /* num parameters */ 4, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[203], - /* return matcher indices */ &kMatcherIndices[111], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [82] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[330], - /* return matcher indices */ &kMatcherIndices[111], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [83] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[336], - /* return matcher indices */ &kMatcherIndices[111], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [84] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[309], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [85] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[231], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [86] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[342], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [87] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[410], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [88] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[223], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [89] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[66], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [90] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[146], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [91] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[19], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [92] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[243], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [93] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[116], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [94] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[207], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [95] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[61], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [96] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[161], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [97] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[7], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [98] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[13], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [99] */ - /* num parameters */ 7, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[0], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [100] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[121], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [101] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[43], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [102] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[136], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [103] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[31], - /* return matcher indices */ &kMatcherIndices[81], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [104] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[183], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [105] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[141], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [106] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[151], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [107] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[49], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [108] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[175], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [109] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[156], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [110] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[247], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [111] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[96], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [112] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[101], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [113] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[37], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [114] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[187], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [115] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[126], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [116] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[481], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [117] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[482], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [118] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[483], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [119] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[484], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [120] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 2, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[485], - /* return matcher indices */ &kMatcherIndices[55], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [121] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[351], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [122] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[354], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [123] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[357], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [124] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[3], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[288], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [125] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[3], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[291], - /* return matcher indices */ &kMatcherIndices[39], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [126] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[3], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[297], - /* return matcher indices */ &kMatcherIndices[39], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [127] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[571], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [128] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[570], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [129] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[565], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [130] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[564], - /* return matcher indices */ &kMatcherIndices[39], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [131] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[402], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { /* [132] */ - /* num parameters */ 2, + /* num parameters */ 4, /* num open types */ 0, - /* num open numbers */ 1, + /* num open numbers */ 0, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[400], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[310], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [133] */ - /* num parameters */ 1, + /* num parameters */ 5, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[498], + /* parameters */ &kParameters[98], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6387,37 +6792,37 @@ { /* [134] */ /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[474], - /* return matcher indices */ &kMatcherIndices[21], + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[562], + /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [135] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[562], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[563], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [136] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 1, + /* num open numbers */ 0, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[561], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[564], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6427,93 +6832,93 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[560], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[565], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [138] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 1, + /* num open numbers */ 2, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[559], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* open numbers */ &kOpenNumbers[0], + /* parameters */ &kParameters[566], + /* return matcher indices */ &kMatcherIndices[55], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [139] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[558], + /* parameters */ &kParameters[378], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [140] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[557], + /* parameters */ &kParameters[381], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [141] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[556], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[384], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [142] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[555], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* num parameters */ 3, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[3], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[435], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [143] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[554], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* num parameters */ 3, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[3], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[438], + /* return matcher indices */ &kMatcherIndices[30], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [144] */ - /* num parameters */ 1, - /* num open types */ 0, + /* num parameters */ 3, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[3], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[553], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[441], + /* return matcher indices */ &kMatcherIndices[30], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6523,9 +6928,9 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[552], + /* parameters */ &kParameters[652], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6535,9 +6940,9 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[551], + /* parameters */ &kParameters[651], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6547,7 +6952,7 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[550], + /* parameters */ &kParameters[561], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6559,7 +6964,7 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[549], + /* parameters */ &kParameters[560], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6571,9 +6976,9 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[548], + /* parameters */ &kParameters[643], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -6583,9 +6988,9 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[547], + /* parameters */ &kParameters[642], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -6595,9 +7000,9 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[567], + /* parameters */ &kParameters[641], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -6607,9 +7012,9 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[566], + /* parameters */ &kParameters[640], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -6619,9 +7024,9 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[546], + /* parameters */ &kParameters[639], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -6631,33 +7036,33 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[545], + /* parameters */ &kParameters[638], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { /* [155] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[294], + /* parameters */ &kParameters[637], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { /* [156] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[369], + /* parameters */ &kParameters[636], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -6667,9 +7072,9 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[544], + /* parameters */ &kParameters[635], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -6679,9 +7084,9 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[543], + /* parameters */ &kParameters[634], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -6691,9 +7096,9 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[542], - /* return matcher indices */ &kMatcherIndices[138], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* parameters */ &kParameters[633], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -6703,9 +7108,9 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[541], - /* return matcher indices */ &kMatcherIndices[103], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* parameters */ &kParameters[632], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -6715,9 +7120,9 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[540], + /* parameters */ &kParameters[631], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6727,9 +7132,9 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[539], + /* parameters */ &kParameters[630], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6739,9 +7144,9 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[538], + /* parameters */ &kParameters[629], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6751,33 +7156,33 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[537], + /* parameters */ &kParameters[628], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [165] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[536], + /* parameters */ &kParameters[477], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [166] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[535], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[479], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6787,7 +7192,7 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[569], + /* parameters */ &kParameters[627], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6799,31 +7204,31 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[568], + /* parameters */ &kParameters[626], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [169] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[533], + /* parameters */ &kParameters[351], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [170] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[532], + /* parameters */ &kParameters[348], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6835,10 +7240,10 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[531], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[625], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* is_deprecated */ false, }, { /* [172] */ @@ -6847,10 +7252,10 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[530], - /* return matcher indices */ &kMatcherIndices[24], + /* parameters */ &kParameters[624], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* is_deprecated */ false, }, { /* [173] */ @@ -6859,10 +7264,10 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[529], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[623], + /* return matcher indices */ &kMatcherIndices[138], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* is_deprecated */ false, }, { /* [174] */ @@ -6871,10 +7276,10 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[528], - /* return matcher indices */ &kMatcherIndices[24], + /* parameters */ &kParameters[622], + /* return matcher indices */ &kMatcherIndices[107], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* is_deprecated */ false, }, { /* [175] */ @@ -6883,10 +7288,10 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[527], - /* return matcher indices */ &kMatcherIndices[10], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* parameters */ &kParameters[621], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, }, { /* [176] */ @@ -6895,10 +7300,10 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[526], - /* return matcher indices */ &kMatcherIndices[24], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* parameters */ &kParameters[620], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, }, { /* [177] */ @@ -6907,10 +7312,10 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[525], - /* return matcher indices */ &kMatcherIndices[10], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* parameters */ &kParameters[619], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, }, { /* [178] */ @@ -6919,56 +7324,56 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[524], - /* return matcher indices */ &kMatcherIndices[24], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* parameters */ &kParameters[618], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, }, { /* [179] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[394], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [180] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[390], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [181] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[523], + /* parameters */ &kParameters[617], /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [180] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[616], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [181] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[646], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [182] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[522], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[645], + /* return matcher indices */ &kMatcherIndices[30], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6979,7 +7384,7 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[521], + /* parameters */ &kParameters[614], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6991,7 +7396,7 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[520], + /* parameters */ &kParameters[613], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7003,10 +7408,10 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[519], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[612], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, + /* is_deprecated */ true, }, { /* [186] */ @@ -7015,151 +7420,151 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[518], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[611], + /* return matcher indices */ &kMatcherIndices[24], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, + /* is_deprecated */ true, }, { /* [187] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[388], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [188] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[380], - /* return matcher indices */ &kMatcherIndices[39], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [189] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[414], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [190] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[450], - /* return matcher indices */ &kMatcherIndices[39], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [191] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[324], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [192] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[321], - /* return matcher indices */ &kMatcherIndices[39], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [193] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[517], - /* return matcher indices */ &kMatcherIndices[137], + /* parameters */ &kParameters[610], + /* return matcher indices */ &kMatcherIndices[10], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [188] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[609], + /* return matcher indices */ &kMatcherIndices[24], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [189] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[608], + /* return matcher indices */ &kMatcherIndices[10], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [190] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[607], + /* return matcher indices */ &kMatcherIndices[24], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [191] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[606], + /* return matcher indices */ &kMatcherIndices[10], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [192] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[605], + /* return matcher indices */ &kMatcherIndices[24], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [193] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[487], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [194] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[516], - /* return matcher indices */ &kMatcherIndices[101], + /* parameters */ &kParameters[513], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [195] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[408], + /* parameters */ &kParameters[604], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [196] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[406], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[603], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [197] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[424], + /* parameters */ &kParameters[602], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [198] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[426], + /* parameters */ &kParameters[601], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7171,7 +7576,7 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[502], + /* parameters */ &kParameters[600], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7183,56 +7588,56 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[501], + /* parameters */ &kParameters[599], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [201] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[496], - /* return matcher indices */ &kMatcherIndices[55], + /* parameters */ &kParameters[493], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [202] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[497], - /* return matcher indices */ &kMatcherIndices[55], + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[459], + /* return matcher indices */ &kMatcherIndices[30], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [203] */ - /* num parameters */ 1, - /* num open types */ 0, + /* num parameters */ 2, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[573], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[491], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [204] */ - /* num parameters */ 1, - /* num open types */ 0, + /* num parameters */ 2, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[572], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[489], + /* return matcher indices */ &kMatcherIndices[30], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7243,7 +7648,7 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[575], + /* parameters */ &kParameters[648], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7255,32 +7660,32 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[574], + /* parameters */ &kParameters[647], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [207] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[382], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[598], + /* return matcher indices */ &kMatcherIndices[137], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [208] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[384], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[597], + /* return matcher indices */ &kMatcherIndices[103], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7291,8 +7696,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[579], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[650], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7303,44 +7708,44 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[578], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[649], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [211] */ - /* num parameters */ 1, - /* num open types */ 0, + /* num parameters */ 3, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[465], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[402], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [212] */ - /* num parameters */ 1, - /* num open types */ 0, + /* num parameters */ 3, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[463], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[408], + /* return matcher indices */ &kMatcherIndices[30], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [213] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[581], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[577], + /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7348,34 +7753,34 @@ /* [214] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 1, + /* num open numbers */ 0, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[580], - /* return matcher indices */ &kMatcherIndices[10], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[578], + /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [215] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[508], + /* parameters */ &kParameters[485], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [216] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[507], + /* parameters */ &kParameters[483], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7387,7 +7792,7 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[583], + /* parameters */ &kParameters[654], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7399,7 +7804,7 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[582], + /* parameters */ &kParameters[653], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7411,7 +7816,7 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[506], + /* parameters */ &kParameters[656], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7423,31 +7828,31 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[505], + /* parameters */ &kParameters[655], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [221] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[504], + /* parameters */ &kParameters[475], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [222] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[503], + /* parameters */ &kParameters[467], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7459,8 +7864,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[472], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[660], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7471,128 +7876,128 @@ /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[470], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[659], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [225] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[360], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[662], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [226] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[375], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[661], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [227] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[500], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[590], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [228] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[499], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[589], + /* return matcher indices */ &kMatcherIndices[30], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [229] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 0, - /* open types */ &kOpenTypes[2], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[509], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[588], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [230] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[452], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[587], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [231] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[585], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[664], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [232] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[584], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[663], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [233] */ - /* num parameters */ 0, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[586], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [234] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[513], - /* return matcher indices */ &kMatcherIndices[43], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[585], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7600,22 +8005,22 @@ /* [235] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 2, + /* num open numbers */ 0, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[2], - /* parameters */ &kParameters[468], - /* return matcher indices */ &kMatcherIndices[9], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[584], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [236] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[339], + /* parameters */ &kParameters[583], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7627,8 +8032,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[461], - /* return matcher indices */ &kMatcherIndices[89], + /* parameters */ &kParameters[582], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7636,11 +8041,11 @@ /* [238] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[459], - /* return matcher indices */ &kMatcherIndices[89], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[581], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7651,8 +8056,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[457], - /* return matcher indices */ &kMatcherIndices[89], + /* parameters */ &kParameters[556], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7660,11 +8065,11 @@ /* [240] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[455], - /* return matcher indices */ &kMatcherIndices[81], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[555], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7675,44 +8080,44 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[453], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[580], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [242] */ - /* num parameters */ 0, + /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[586], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[579], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [243] */ /* num parameters */ 2, /* num open types */ 0, - /* num open numbers */ 1, + /* num open numbers */ 0, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[386], - /* return matcher indices */ &kMatcherIndices[21], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[469], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [244] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[510], - /* return matcher indices */ &kMatcherIndices[43], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[471], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7723,8 +8128,8 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[511], - /* return matcher indices */ &kMatcherIndices[43], + /* parameters */ &kParameters[559], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7732,34 +8137,34 @@ /* [246] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[512], - /* return matcher indices */ &kMatcherIndices[43], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[558], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [247] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[514], - /* return matcher indices */ &kMatcherIndices[43], + /* parameters */ &kParameters[342], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [248] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[515], + /* parameters */ &kParameters[426], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7771,203 +8176,419 @@ /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[534], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, - }, - { - /* [250] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[318], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [251] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[398], + /* parameters */ &kParameters[666], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { + /* [250] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[665], + /* return matcher indices */ &kMatcherIndices[30], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [251] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[2], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[615], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { /* [252] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 1, + /* num open numbers */ 0, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[563], - /* return matcher indices */ &kMatcherIndices[12], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[593], + /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [253] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[404], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[554], + /* return matcher indices */ &kMatcherIndices[91], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [254] */ /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[0], - /* open numbers */ &kOpenNumbers[4], - /* parameters */ &kParameters[576], - /* return matcher indices */ &kMatcherIndices[43], + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[553], + /* return matcher indices */ &kMatcherIndices[91], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [255] */ /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[577], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[552], + /* return matcher indices */ &kMatcherIndices[91], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [256] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[412], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[551], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [257] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[378], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[550], + /* return matcher indices */ &kMatcherIndices[87], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [258] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[416], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* num parameters */ 0, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[667], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [259] */ - /* num parameters */ 2, + /* num parameters */ 3, /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[418], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[387], + /* return matcher indices */ &kMatcherIndices[105], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [260] */ - /* num parameters */ 2, - /* num open types */ 1, + /* num parameters */ 3, + /* num open types */ 0, /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[5], + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], /* parameters */ &kParameters[420], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [261] */ /* num parameters */ 2, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[422], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[465], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [262] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[430], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[591], + /* return matcher indices */ &kMatcherIndices[43], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [263] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[396], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[592], + /* return matcher indices */ &kMatcherIndices[43], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [264] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[594], + /* return matcher indices */ &kMatcherIndices[43], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [265] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[595], + /* return matcher indices */ &kMatcherIndices[43], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [266] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[596], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [267] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 2, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[2], + /* parameters */ &kParameters[557], + /* return matcher indices */ &kMatcherIndices[9], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [268] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[354], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [269] */ /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 1, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[481], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [270] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[644], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [271] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[463], + /* return matcher indices */ &kMatcherIndices[83], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [272] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 1, /* open types */ &kOpenTypes[2], + /* open numbers */ &kOpenNumbers[4], + /* parameters */ &kParameters[657], + /* return matcher indices */ &kMatcherIndices[43], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [273] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[428], + /* parameters */ &kParameters[658], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [265] */ - /* num parameters */ 3, + /* [274] */ + /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[327], - /* return matcher indices */ &kMatcherIndices[127], + /* parameters */ &kParameters[501], + /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, + { + /* [275] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[505], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [276] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[509], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [277] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[531], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [278] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[517], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [279] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[521], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [280] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[525], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [281] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[499], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [282] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[473], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [283] */ + /* num parameters */ 0, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[667], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), + /* is_deprecated */ false, + }, }; constexpr IntrinsicInfo kIntrinsics[] = { @@ -7976,309 +8597,309 @@ /* fn abs<T : fiu32>(T) -> T */ /* fn abs<N : num, T : fiu32>(vec<N, T>) -> vec<N, T> */ /* num overloads */ 2, - /* overloads */ &kOverloads[231], + /* overloads */ &kOverloads[249], }, { /* [1] */ /* fn acos(f32) -> f32 */ /* fn acos<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[217], + /* overloads */ &kOverloads[231], }, { /* [2] */ /* fn all(bool) -> bool */ /* fn all<N : num>(vec<N, bool>) -> bool */ /* num overloads */ 2, - /* overloads */ &kOverloads[213], + /* overloads */ &kOverloads[225], }, { /* [3] */ /* fn any(bool) -> bool */ /* fn any<N : num>(vec<N, bool>) -> bool */ /* num overloads */ 2, - /* overloads */ &kOverloads[209], + /* overloads */ &kOverloads[223], }, { /* [4] */ /* fn arrayLength<T, A : access>(ptr<storage, array<T>, A>) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[254], + /* overloads */ &kOverloads[272], }, { /* [5] */ /* fn asin(f32) -> f32 */ /* fn asin<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[205], + /* overloads */ &kOverloads[219], }, { /* [6] */ /* fn atan(f32) -> f32 */ /* fn atan<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[203], + /* overloads */ &kOverloads[217], }, { /* [7] */ /* fn atan2(f32, f32) -> f32 */ /* fn atan2<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[195], + /* overloads */ &kOverloads[215], }, { /* [8] */ /* fn ceil(f32) -> f32 */ /* fn ceil<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[127], + /* overloads */ &kOverloads[145], }, { /* [9] */ /* fn clamp<T : fiu32>(T, T, T) -> T */ /* fn clamp<N : num, T : fiu32>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */ /* num overloads */ 2, - /* overloads */ &kOverloads[191], + /* overloads */ &kOverloads[211], }, { /* [10] */ /* fn cos(f32) -> f32 */ /* fn cos<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[167], + /* overloads */ &kOverloads[209], }, { /* [11] */ /* fn cosh(f32) -> f32 */ /* fn cosh<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[151], + /* overloads */ &kOverloads[205], }, { /* [12] */ /* fn countOneBits<T : iu32>(T) -> T */ /* fn countOneBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */ /* num overloads */ 2, - /* overloads */ &kOverloads[129], + /* overloads */ &kOverloads[181], }, { /* [13] */ /* fn cross(vec3<f32>, vec3<f32>) -> vec3<f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[253], + /* overloads */ &kOverloads[271], }, { /* [14] */ /* fn determinant<N : num>(mat<N, N, f32>) -> f32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[252], + /* overloads */ &kOverloads[270], }, { /* [15] */ /* fn distance(f32, f32) -> f32 */ /* fn distance<N : num>(vec<N, f32>, vec<N, f32>) -> f32 */ /* num overloads */ 2, - /* overloads */ &kOverloads[131], + /* overloads */ &kOverloads[165], }, { /* [16] */ /* fn dot<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[251], + /* overloads */ &kOverloads[269], }, { /* [17] */ /* fn dpdx(f32) -> f32 */ /* fn dpdx<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[135], + /* overloads */ &kOverloads[149], }, { /* [18] */ /* fn dpdxCoarse(f32) -> f32 */ /* fn dpdxCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[137], + /* overloads */ &kOverloads[151], }, { /* [19] */ /* fn dpdxFine(f32) -> f32 */ /* fn dpdxFine<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[139], + /* overloads */ &kOverloads[153], }, { /* [20] */ /* fn dpdy(f32) -> f32 */ /* fn dpdy<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[141], + /* overloads */ &kOverloads[155], }, { /* [21] */ /* fn dpdyCoarse(f32) -> f32 */ /* fn dpdyCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[143], + /* overloads */ &kOverloads[157], }, { /* [22] */ /* fn dpdyFine(f32) -> f32 */ /* fn dpdyFine<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[145], + /* overloads */ &kOverloads[159], }, { /* [23] */ /* fn exp(f32) -> f32 */ /* fn exp<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[147], + /* overloads */ &kOverloads[161], }, { /* [24] */ /* fn exp2(f32) -> f32 */ /* fn exp2<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[149], + /* overloads */ &kOverloads[163], }, { /* [25] */ /* fn faceForward<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[250], + /* overloads */ &kOverloads[268], }, { /* [26] */ /* fn floor(f32) -> f32 */ /* fn floor<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[153], + /* overloads */ &kOverloads[167], }, { /* [27] */ /* fn fma(f32, f32, f32) -> f32 */ /* fn fma<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[155], + /* overloads */ &kOverloads[169], }, { /* [28] */ /* fn fract(f32) -> f32 */ /* fn fract<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[157], + /* overloads */ &kOverloads[171], }, { /* [29] */ /* fn frexp(f32) -> __frexp_result */ /* fn frexp<N : num>(vec<N, f32>) -> __frexp_result_vec<N> */ /* num overloads */ 2, - /* overloads */ &kOverloads[159], + /* overloads */ &kOverloads[173], }, { /* [30] */ /* fn fwidth(f32) -> f32 */ /* fn fwidth<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[161], + /* overloads */ &kOverloads[175], }, { /* [31] */ /* fn fwidthCoarse(f32) -> f32 */ /* fn fwidthCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[163], + /* overloads */ &kOverloads[177], }, { /* [32] */ /* fn fwidthFine(f32) -> f32 */ /* fn fwidthFine<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[165], + /* overloads */ &kOverloads[179], }, { /* [33] */ /* fn ignore<T>(T) */ /* num overloads */ 1, - /* overloads */ &kOverloads[249], + /* overloads */ &kOverloads[251], }, { /* [34] */ /* fn inverseSqrt(f32) -> f32 */ /* fn inverseSqrt<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[169], + /* overloads */ &kOverloads[183], }, { /* [35] */ /* fn isFinite(f32) -> bool */ /* fn isFinite<N : num>(vec<N, f32>) -> vec<N, bool> */ /* num overloads */ 2, - /* overloads */ &kOverloads[171], + /* overloads */ &kOverloads[185], }, { /* [36] */ /* fn isInf(f32) -> bool */ /* fn isInf<N : num>(vec<N, f32>) -> vec<N, bool> */ /* num overloads */ 2, - /* overloads */ &kOverloads[173], + /* overloads */ &kOverloads[187], }, { /* [37] */ /* fn isNan(f32) -> bool */ /* fn isNan<N : num>(vec<N, f32>) -> vec<N, bool> */ /* num overloads */ 2, - /* overloads */ &kOverloads[175], + /* overloads */ &kOverloads[189], }, { /* [38] */ /* fn isNormal(f32) -> bool */ /* fn isNormal<N : num>(vec<N, f32>) -> vec<N, bool> */ /* num overloads */ 2, - /* overloads */ &kOverloads[177], + /* overloads */ &kOverloads[191], }, { /* [39] */ /* fn ldexp(f32, i32) -> f32 */ /* fn ldexp<N : num>(vec<N, f32>, vec<N, i32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[179], + /* overloads */ &kOverloads[193], }, { /* [40] */ /* fn length(f32) -> f32 */ /* fn length<N : num>(vec<N, f32>) -> f32 */ /* num overloads */ 2, - /* overloads */ &kOverloads[181], + /* overloads */ &kOverloads[195], }, { /* [41] */ /* fn log(f32) -> f32 */ /* fn log<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[183], + /* overloads */ &kOverloads[197], }, { /* [42] */ /* fn log2(f32) -> f32 */ /* fn log2<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[185], + /* overloads */ &kOverloads[199], }, { /* [43] */ /* fn max<T : fiu32>(T, T) -> T */ /* fn max<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T> */ /* num overloads */ 2, - /* overloads */ &kOverloads[187], + /* overloads */ &kOverloads[201], }, { /* [44] */ /* fn min<T : fiu32>(T, T) -> T */ /* fn min<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T> */ /* num overloads */ 2, - /* overloads */ &kOverloads[189], + /* overloads */ &kOverloads[203], }, { /* [45] */ @@ -8286,83 +8907,83 @@ /* fn mix<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */ /* fn mix<N : num>(vec<N, f32>, vec<N, f32>, f32) -> vec<N, f32> */ /* num overloads */ 3, - /* overloads */ &kOverloads[121], + /* overloads */ &kOverloads[139], }, { /* [46] */ /* fn modf(f32) -> __modf_result */ /* fn modf<N : num>(vec<N, f32>) -> __modf_result_vec<N> */ /* num overloads */ 2, - /* overloads */ &kOverloads[193], + /* overloads */ &kOverloads[207], }, { /* [47] */ /* fn normalize<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[248], + /* overloads */ &kOverloads[266], }, { /* [48] */ /* fn pack2x16float(vec2<f32>) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[247], + /* overloads */ &kOverloads[265], }, { /* [49] */ /* fn pack2x16snorm(vec2<f32>) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[234], + /* overloads */ &kOverloads[264], }, { /* [50] */ /* fn pack2x16unorm(vec2<f32>) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[246], + /* overloads */ &kOverloads[252], }, { /* [51] */ /* fn pack4x8snorm(vec4<f32>) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[245], + /* overloads */ &kOverloads[263], }, { /* [52] */ /* fn pack4x8unorm(vec4<f32>) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[244], + /* overloads */ &kOverloads[262], }, { /* [53] */ /* fn pow(f32, f32) -> f32 */ /* fn pow<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[207], + /* overloads */ &kOverloads[221], }, { /* [54] */ /* fn reflect<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[243], + /* overloads */ &kOverloads[261], }, { /* [55] */ /* fn refract<N : num>(vec<N, f32>, vec<N, f32>, f32) -> vec<N, f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[236], + /* overloads */ &kOverloads[260], }, { /* [56] */ /* fn reverseBits<T : iu32>(T) -> T */ /* fn reverseBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */ /* num overloads */ 2, - /* overloads */ &kOverloads[229], + /* overloads */ &kOverloads[227], }, { /* [57] */ /* fn round(f32) -> f32 */ /* fn round<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[215], + /* overloads */ &kOverloads[229], }, { /* [58] */ @@ -8370,118 +8991,118 @@ /* fn select<T : scalar, N : num>(vec<N, T>, vec<N, T>, bool) -> vec<N, T> */ /* fn select<N : num, T : scalar>(vec<N, T>, vec<N, T>, vec<N, bool>) -> vec<N, T> */ /* num overloads */ 3, - /* overloads */ &kOverloads[124], + /* overloads */ &kOverloads[142], }, { /* [59] */ /* fn sign(f32) -> f32 */ /* fn sign<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[219], + /* overloads */ &kOverloads[233], }, { /* [60] */ /* fn sin(f32) -> f32 */ /* fn sin<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[221], + /* overloads */ &kOverloads[235], }, { /* [61] */ /* fn sinh(f32) -> f32 */ /* fn sinh<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[199], + /* overloads */ &kOverloads[237], }, { /* [62] */ /* fn smoothStep(f32, f32, f32) -> f32 */ /* fn smoothStep<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[225], + /* overloads */ &kOverloads[247], }, { /* [63] */ /* fn sqrt(f32) -> f32 */ /* fn sqrt<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[227], + /* overloads */ &kOverloads[241], }, { /* [64] */ /* fn step(f32, f32) -> f32 */ /* fn step<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[197], + /* overloads */ &kOverloads[243], }, { /* [65] */ /* fn storageBarrier() */ /* num overloads */ 1, - /* overloads */ &kOverloads[233], + /* overloads */ &kOverloads[283], }, { /* [66] */ /* fn tan(f32) -> f32 */ /* fn tan<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[133], + /* overloads */ &kOverloads[147], }, { /* [67] */ /* fn tanh(f32) -> f32 */ /* fn tanh<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[223], + /* overloads */ &kOverloads[245], }, { /* [68] */ /* fn transpose<M : num, N : num>(mat<M, N, f32>) -> mat<N, M, f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[235], + /* overloads */ &kOverloads[267], }, { /* [69] */ /* fn trunc(f32) -> f32 */ /* fn trunc<N : num>(vec<N, f32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ &kOverloads[211], + /* overloads */ &kOverloads[239], }, { /* [70] */ /* fn unpack2x16float(u32) -> vec2<f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[237], + /* overloads */ &kOverloads[253], }, { /* [71] */ /* fn unpack2x16snorm(u32) -> vec2<f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[238], + /* overloads */ &kOverloads[254], }, { /* [72] */ /* fn unpack2x16unorm(u32) -> vec2<f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[239], + /* overloads */ &kOverloads[255], }, { /* [73] */ /* fn unpack4x8snorm(u32) -> vec4<f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[240], + /* overloads */ &kOverloads[256], }, { /* [74] */ /* fn unpack4x8unorm(u32) -> vec4<f32> */ /* num overloads */ 1, - /* overloads */ &kOverloads[241], + /* overloads */ &kOverloads[257], }, { /* [75] */ /* fn workgroupBarrier() */ /* num overloads */ 1, - /* overloads */ &kOverloads[242], + /* overloads */ &kOverloads[258], }, { /* [76] */ @@ -8517,16 +9138,44 @@ }, { /* [77] */ + /* fn textureGather<T : fiu32>(component: i32, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>) -> vec4<T> */ + /* fn textureGather<T : fiu32>(component: i32, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<T> */ + /* fn textureGather<T : fiu32>(component: i32, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<T> */ + /* fn textureGather<T : fiu32>(component: i32, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<T> */ + /* fn textureGather<T : fiu32>(component: i32, texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */ + /* fn textureGather<T : fiu32>(component: i32, texture: texture_cube_array<T>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<T> */ + /* fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */ + /* fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32> */ + /* fn textureGather(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<f32> */ + /* fn textureGather(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<f32> */ + /* fn textureGather(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */ + /* fn textureGather(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<f32> */ + /* num overloads */ 12, + /* overloads */ &kOverloads[57], + }, + { + /* [78] */ + /* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> vec4<f32> */ + /* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> vec4<f32> */ + /* fn textureGatherCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> vec4<f32> */ + /* fn textureGatherCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> vec4<f32> */ + /* fn textureGatherCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> vec4<f32> */ + /* fn textureGatherCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> vec4<f32> */ + /* num overloads */ 6, + /* overloads */ &kOverloads[116], + }, + { + /* [79] */ /* fn textureNumLayers<T : fiu32>(texture: texture_2d_array<T>) -> i32 */ /* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> i32 */ /* fn textureNumLayers(texture: texture_depth_2d_array) -> i32 */ /* fn textureNumLayers(texture: texture_depth_cube_array) -> i32 */ /* fn textureNumLayers<F : texel_format, A : write_only>(texture: texture_storage_2d_array<F, A>) -> i32 */ /* num overloads */ 5, - /* overloads */ &kOverloads[116], + /* overloads */ &kOverloads[134], }, { - /* [78] */ + /* [80] */ /* fn textureNumLevels<T : fiu32>(texture: texture_1d<T>) -> i32 */ /* fn textureNumLevels<T : fiu32>(texture: texture_2d<T>) -> i32 */ /* fn textureNumLevels<T : fiu32>(texture: texture_2d_array<T>) -> i32 */ @@ -8538,17 +9187,17 @@ /* fn textureNumLevels(texture: texture_depth_cube) -> i32 */ /* fn textureNumLevels(texture: texture_depth_cube_array) -> i32 */ /* num overloads */ 10, - /* overloads */ &kOverloads[69], + /* overloads */ &kOverloads[81], }, { - /* [79] */ + /* [81] */ /* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> i32 */ /* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> i32 */ /* num overloads */ 2, - /* overloads */ &kOverloads[201], + /* overloads */ &kOverloads[213], }, { - /* [80] */ + /* [82] */ /* fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32> */ /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */ /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32> */ @@ -8568,7 +9217,7 @@ /* overloads */ &kOverloads[42], }, { - /* [81] */ + /* [83] */ /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32) -> vec4<f32> */ /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32, offset: vec2<i32>) -> vec4<f32> */ /* fn textureSampleBias(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, bias: f32) -> vec4<f32> */ @@ -8578,10 +9227,10 @@ /* fn textureSampleBias(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */ /* fn textureSampleBias(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, bias: f32) -> vec4<f32> */ /* num overloads */ 8, - /* overloads */ &kOverloads[88], + /* overloads */ &kOverloads[108], }, { - /* [82] */ + /* [84] */ /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */ /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> f32 */ /* fn textureSampleCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> f32 */ @@ -8589,10 +9238,10 @@ /* fn textureSampleCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */ /* fn textureSampleCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32 */ /* num overloads */ 6, - /* overloads */ &kOverloads[110], + /* overloads */ &kOverloads[122], }, { - /* [83] */ + /* [85] */ /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */ /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> f32 */ /* fn textureSampleCompareLevel(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> f32 */ @@ -8600,10 +9249,10 @@ /* fn textureSampleCompareLevel(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */ /* fn textureSampleCompareLevel(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32 */ /* num overloads */ 6, - /* overloads */ &kOverloads[104], + /* overloads */ &kOverloads[128], }, { - /* [84] */ + /* [86] */ /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */ /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>, offset: vec2<i32>) -> vec4<f32> */ /* fn textureSampleGrad(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */ @@ -8613,10 +9262,10 @@ /* fn textureSampleGrad(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */ /* fn textureSampleGrad(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */ /* num overloads */ 8, - /* overloads */ &kOverloads[96], + /* overloads */ &kOverloads[100], }, { - /* [85] */ + /* [87] */ /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32> */ /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, offset: vec2<i32>) -> vec4<f32> */ /* fn textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, level: f32) -> vec4<f32> */ @@ -8636,7 +9285,7 @@ /* overloads */ &kOverloads[27], }, { - /* [86] */ + /* [88] */ /* fn textureStore(texture: texture_storage_1d<f32_texel_format, write>, coords: i32, value: vec4<f32>) */ /* fn textureStore(texture: texture_storage_2d<f32_texel_format, write>, coords: vec2<i32>, value: vec4<f32>) */ /* fn textureStore(texture: texture_storage_2d_array<f32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>) */ @@ -8650,10 +9299,10 @@ /* fn textureStore(texture: texture_storage_2d_array<u32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>) */ /* fn textureStore(texture: texture_storage_3d<u32_texel_format, write>, coords: vec3<i32>, value: vec4<u32>) */ /* num overloads */ 12, - /* overloads */ &kOverloads[57], + /* overloads */ &kOverloads[69], }, { - /* [87] */ + /* [89] */ /* fn textureLoad<T : fiu32>(texture: texture_1d<T>, coords: i32, level: i32) -> vec4<T> */ /* fn textureLoad<T : fiu32>(texture: texture_2d<T>, coords: vec2<i32>, level: i32) -> vec4<T> */ /* fn textureLoad<T : fiu32>(texture: texture_2d_array<T>, coords: vec2<i32>, array_index: i32, level: i32) -> vec4<T> */ @@ -8664,73 +9313,73 @@ /* fn textureLoad(texture: texture_depth_multisampled_2d, coords: vec2<i32>, sample_index: i32) -> f32 */ /* fn textureLoad(texture: texture_external, coords: vec2<i32>) -> vec4<f32> */ /* num overloads */ 9, - /* overloads */ &kOverloads[79], - }, - { - /* [88] */ - /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */ - /* num overloads */ 1, - /* overloads */ &kOverloads[255], - }, - { - /* [89] */ - /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */ - /* num overloads */ 1, - /* overloads */ &kOverloads[256], + /* overloads */ &kOverloads[91], }, { /* [90] */ - /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ + /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[257], + /* overloads */ &kOverloads[273], }, { /* [91] */ - /* fn atomicSub<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ + /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */ /* num overloads */ 1, - /* overloads */ &kOverloads[258], + /* overloads */ &kOverloads[274], }, { /* [92] */ - /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ + /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[259], + /* overloads */ &kOverloads[275], }, { /* [93] */ - /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ + /* fn atomicSub<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[260], + /* overloads */ &kOverloads[276], }, { /* [94] */ - /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ + /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[261], + /* overloads */ &kOverloads[277], }, { /* [95] */ - /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ + /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[262], + /* overloads */ &kOverloads[278], }, { /* [96] */ - /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ + /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[263], + /* overloads */ &kOverloads[279], }, { /* [97] */ - /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ + /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[264], + /* overloads */ &kOverloads[280], }, { /* [98] */ + /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ + /* num overloads */ 1, + /* overloads */ &kOverloads[281], + }, + { + /* [99] */ + /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ + /* num overloads */ 1, + /* overloads */ &kOverloads[282], + }, + { + /* [100] */ /* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> vec2<T> */ /* num overloads */ 1, - /* overloads */ &kOverloads[265], + /* overloads */ &kOverloads[259], }, };
diff --git a/src/intrinsics.def b/src/intrinsics.def index 0d436fe..bffcb28 100644 --- a/src/intrinsics.def +++ b/src/intrinsics.def
@@ -423,6 +423,24 @@ fn textureDimensions<F: texel_format, A: write_only>(texture: texture_storage_2d_array<F, A>) -> vec2<i32> fn textureDimensions<F: texel_format, A: write_only>(texture: texture_storage_3d<F, A>) -> vec3<i32> fn textureDimensions(texture: texture_external) -> vec2<i32> +fn textureGather<T: fiu32>(component: i32, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>) -> vec4<T> +fn textureGather<T: fiu32>(component: i32, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<T> +fn textureGather<T: fiu32>(component: i32, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<T> +fn textureGather<T: fiu32>(component: i32, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<T> +fn textureGather<T: fiu32>(component: i32, texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> +fn textureGather<T: fiu32>(component: i32, texture: texture_cube_array<T>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<T> +fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> vec4<f32> +fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32> +fn textureGather(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<f32> +fn textureGather(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<f32> +fn textureGather(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32> +fn textureGather(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<f32> +fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> vec4<f32> +fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> vec4<f32> +fn textureGatherCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> vec4<f32> +fn textureGatherCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> vec4<f32> +fn textureGatherCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> vec4<f32> +fn textureGatherCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> vec4<f32> fn textureNumLayers<T: fiu32>(texture: texture_2d_array<T>) -> i32 fn textureNumLayers<T: fiu32>(texture: texture_cube_array<T>) -> i32 fn textureNumLayers(texture: texture_depth_2d_array) -> i32
diff --git a/src/resolver/intrinsic_test.cc b/src/resolver/intrinsic_test.cc index a2f848a..c0ba99d 100644 --- a/src/resolver/intrinsic_test.cc +++ b/src/resolver/intrinsic_test.cc
@@ -1744,6 +1744,42 @@ case ValidTextureOverload::kDimensionsStorageWO2dArray: case ValidTextureOverload::kDimensionsStorageWO3d: return R"(textureDimensions(texture))"; + case ValidTextureOverload::kGather2dF32: + return R"(textureGather(component, texture, sampler, coords))"; + case ValidTextureOverload::kGather2dOffsetF32: + return R"(textureGather(component, texture, sampler, coords, offset))"; + case ValidTextureOverload::kGather2dArrayF32: + return R"(textureGather(component, texture, sampler, coords, array_index))"; + case ValidTextureOverload::kGather2dArrayOffsetF32: + return R"(textureGather(component, texture, sampler, coords, array_index, offset))"; + case ValidTextureOverload::kGatherCubeF32: + return R"(textureGather(component, texture, sampler, coords))"; + case ValidTextureOverload::kGatherCubeArrayF32: + return R"(textureGather(component, texture, sampler, coords, array_index))"; + case ValidTextureOverload::kGatherDepth2dF32: + return R"(textureGather(texture, sampler, coords))"; + case ValidTextureOverload::kGatherDepth2dOffsetF32: + return R"(textureGather(texture, sampler, coords, offset))"; + case ValidTextureOverload::kGatherDepth2dArrayF32: + return R"(textureGather(texture, sampler, coords, array_index))"; + case ValidTextureOverload::kGatherDepth2dArrayOffsetF32: + return R"(textureGather(texture, sampler, coords, array_index, offset))"; + case ValidTextureOverload::kGatherDepthCubeF32: + return R"(textureGather(texture, sampler, coords))"; + case ValidTextureOverload::kGatherDepthCubeArrayF32: + return R"(textureGather(texture, sampler, coords, array_index))"; + case ValidTextureOverload::kGatherCompareDepth2dF32: + return R"(textureGatherCompare(texture, sampler, coords, depth_ref))"; + case ValidTextureOverload::kGatherCompareDepth2dOffsetF32: + return R"(textureGatherCompare(texture, sampler, coords, depth_ref, offset))"; + case ValidTextureOverload::kGatherCompareDepth2dArrayF32: + return R"(textureGatherCompare(texture, sampler, coords, array_index, depth_ref))"; + case ValidTextureOverload::kGatherCompareDepth2dArrayOffsetF32: + return R"(textureGatherCompare(texture, sampler, coords, array_index, depth_ref, offset))"; + case ValidTextureOverload::kGatherCompareDepthCubeF32: + return R"(textureGatherCompare(texture, sampler, coords, depth_ref))"; + case ValidTextureOverload::kGatherCompareDepthCubeArrayF32: + return R"(textureGatherCompare(texture, sampler, coords, array_index, depth_ref))"; case ValidTextureOverload::kNumLayers2dArray: case ValidTextureOverload::kNumLayersCubeArray: case ValidTextureOverload::kNumLayersDepth2dArray: @@ -1965,6 +2001,26 @@ EXPECT_TRUE(TypeOf(call)->Is<sem::I32>()); } else if (std::string(param.function) == "textureStore") { EXPECT_TRUE(TypeOf(call)->Is<sem::Void>()); + } else if (std::string(param.function) == "textureGather") { + auto* vec = As<sem::Vector>(TypeOf(call)); + ASSERT_NE(vec, nullptr); + EXPECT_EQ(vec->Width(), 4u); + switch (param.texture_data_type) { + case ast::intrinsic::test::TextureDataType::kF32: + EXPECT_TRUE(vec->type()->Is<sem::F32>()); + break; + case ast::intrinsic::test::TextureDataType::kU32: + EXPECT_TRUE(vec->type()->Is<sem::U32>()); + break; + case ast::intrinsic::test::TextureDataType::kI32: + EXPECT_TRUE(vec->type()->Is<sem::I32>()); + break; + } + } else if (std::string(param.function) == "textureGatherCompare") { + auto* vec = As<sem::Vector>(TypeOf(call)); + ASSERT_NE(vec, nullptr); + EXPECT_EQ(vec->Width(), 4u); + EXPECT_TRUE(vec->type()->Is<sem::F32>()); } else { switch (param.texture_kind) { case ast::intrinsic::test::TextureKind::kRegular:
diff --git a/src/resolver/intrinsic_validation_test.cc b/src/resolver/intrinsic_validation_test.cc index 49cfb07..edae91f 100644 --- a/src/resolver/intrinsic_validation_test.cc +++ b/src/resolver/intrinsic_validation_test.cc
@@ -121,7 +121,7 @@ R"(12:34 error: 'mix' is a builtin and cannot be redeclared as a struct)"); } -namespace TextureSamplerOffset { +namespace texture_constexpr_args { using TextureOverloadCase = ast::intrinsic::test::TextureOverloadCase; using ValidTextureOverload = ast::intrinsic::test::ValidTextureOverload; @@ -131,194 +131,272 @@ using i32 = ProgramBuilder::i32; using f32 = ProgramBuilder::f32; -static std::vector<TextureOverloadCase> ValidCases() { +static std::vector<TextureOverloadCase> TextureCases( + std::unordered_set<ValidTextureOverload> overloads) { std::vector<TextureOverloadCase> cases; for (auto c : TextureOverloadCase::ValidCases()) { - if (std::string(c.function).find("textureSample") == 0) { - if (std::string(c.description).find("offset ") != std::string::npos) { - cases.push_back(c); - } + if (overloads.count(c.overload)) { + cases.push_back(c); } } return cases; } -struct OffsetCase { - bool is_valid; - int32_t x; - int32_t y; - int32_t z; - int32_t illegal_value = 0; +enum class Position { + kFirst, + kLast, }; -static std::vector<OffsetCase> OffsetCases() { - return { - {true, 0, 1, 2}, // - {true, 7, -8, 7}, // - {false, 10, 10, 20, 10}, // - {false, -9, 0, 0, -9}, // - {false, 0, 8, 0, 8}, // +struct Parameter { + const char* const name; + const Position position; + int min; + int max; +}; + +class Constexpr { + public: + enum class Kind { + kScalar, + kVec2, + kVec3, + kVec3_Scalar_Vec2, + kVec3_Vec2_Scalar, + kEmptyVec2, + kEmptyVec3, }; -} -using IntrinsicTextureSamplerValidationTest = - ResolverTestWithParam<std::tuple<TextureOverloadCase, // texture info - OffsetCase // offset info - >>; -TEST_P(IntrinsicTextureSamplerValidationTest, ConstExpr) { - auto& p = GetParam(); - auto param = std::get<0>(p); - auto offset = std::get<1>(p); - param.BuildTextureVariable(this); - param.BuildSamplerVariable(this); + Constexpr(int32_t invalid_idx, + Kind k, + int32_t x = 0, + int32_t y = 0, + int32_t z = 0) + : invalid_index(invalid_idx), kind(k), values{x, y, z} {} - auto args = param.args(this); - // Make Resolver visit the Node about to be removed - WrapInFunction(args.back()); - args.pop_back(); - if (NumCoordinateAxes(param.texture_dimension) == 2) { - args.push_back( - Construct(Source{{12, 34}}, ty.vec2<i32>(), offset.x, offset.y)); - } else if (NumCoordinateAxes(param.texture_dimension) == 3) { - args.push_back(Construct(Source{{12, 34}}, ty.vec3<i32>(), offset.x, - offset.y, offset.z)); + const ast::Expression* operator()(Source src, ProgramBuilder& b) { + switch (kind) { + case Kind::kScalar: + return b.Expr(src, values[0]); + case Kind::kVec2: + return b.Construct(src, b.ty.vec2<i32>(), values[0], values[1]); + case Kind::kVec3: + return b.Construct(src, b.ty.vec3<i32>(), values[0], values[1], + values[2]); + case Kind::kVec3_Scalar_Vec2: + return b.Construct(src, b.ty.vec3<i32>(), values[0], + b.vec2<i32>(values[1], values[2])); + case Kind::kVec3_Vec2_Scalar: + return b.Construct(src, b.ty.vec3<i32>(), + b.vec2<i32>(values[0], values[1]), values[2]); + case Kind::kEmptyVec2: + return b.Construct(src, b.ty.vec2<i32>()); + case Kind::kEmptyVec3: + return b.Construct(src, b.ty.vec3<i32>()); + } + return nullptr; } - auto* call = Call(param.function, args); - Func("func", {}, ty.void_(), {CallStmt(call)}, - {create<ast::StageDecoration>(ast::PipelineStage::kFragment)}); + static const constexpr int32_t kValid = -1; + const int32_t invalid_index; // Expected error value, or kValid + const Kind kind; + const std::array<int32_t, 3> values; +}; - if (offset.is_valid) { +static std::ostream& operator<<(std::ostream& out, Parameter param) { + return out << param.name; +} + +static std::ostream& operator<<(std::ostream& out, Constexpr expr) { + switch (expr.kind) { + case Constexpr::Kind::kScalar: + return out << expr.values[0]; + case Constexpr::Kind::kVec2: + return out << "vec2(" << expr.values[0] << ", " << expr.values[1] << ")"; + case Constexpr::Kind::kVec3: + return out << "vec3(" << expr.values[0] << ", " << expr.values[1] << ", " + << expr.values[2] << ")"; + case Constexpr::Kind::kVec3_Scalar_Vec2: + return out << "vec3(" << expr.values[0] << ", vec2(" << expr.values[1] + << ", " << expr.values[2] << "))"; + case Constexpr::Kind::kVec3_Vec2_Scalar: + return out << "vec3(vec2(" << expr.values[0] << ", " << expr.values[1] + << "), " << expr.values[2] << ")"; + case Constexpr::Kind::kEmptyVec2: + return out << "vec2()"; + case Constexpr::Kind::kEmptyVec3: + return out << "vec3()"; + } + return out; +} + +using IntrinsicTextureConstExprArgValidationTest = ResolverTestWithParam< + std::tuple<TextureOverloadCase, Parameter, Constexpr>>; + +TEST_P(IntrinsicTextureConstExprArgValidationTest, Immediate) { + auto& p = GetParam(); + auto overload = std::get<0>(p); + auto param = std::get<1>(p); + auto expr = std::get<2>(p); + + overload.BuildTextureVariable(this); + overload.BuildSamplerVariable(this); + + auto args = overload.args(this); + auto*& arg_to_replace = + (param.position == Position::kFirst) ? args.front() : args.back(); + + // BuildTextureVariable() uses a Literal for scalars, and a CallExpression for + // a vector constructor. + bool is_vector = arg_to_replace->Is<ast::CallExpression>(); + + // Make the expression to be replaced, reachable. This keeps the resolver + // happy. + WrapInFunction(arg_to_replace); + + arg_to_replace = expr(Source{{12, 34}}, *this); + + // Call the intrinsic with the constexpr argument replaced + Func("func", {}, ty.void_(), {CallStmt(Call(overload.function, args))}, + {Stage(ast::PipelineStage::kFragment)}); + + if (expr.invalid_index == Constexpr::kValid) { EXPECT_TRUE(r()->Resolve()) << r()->error(); } else { EXPECT_FALSE(r()->Resolve()); std::stringstream err; - err << "12:34 error: each offset component of '" << param.function - << "' must be at least -8 and at most 7. found: '" - << std::to_string(offset.illegal_value) << "'"; + if (is_vector) { + err << "12:34 error: each component of the " << param.name + << " argument must be at least " << param.min << " and at most " + << param.max << ". " << param.name << " component " + << expr.invalid_index << " is " + << std::to_string(expr.values[expr.invalid_index]); + } else { + err << "12:34 error: the " << param.name << " argument must be at least " + << param.min << " and at most " << param.max << ". " << param.name + << " is " << std::to_string(expr.values[expr.invalid_index]); + } EXPECT_EQ(r()->error(), err.str()); } } -TEST_P(IntrinsicTextureSamplerValidationTest, ConstExprOfConstExpr) { +TEST_P(IntrinsicTextureConstExprArgValidationTest, GlobalConst) { auto& p = GetParam(); - auto param = std::get<0>(p); - auto offset = std::get<1>(p); - param.BuildTextureVariable(this); - param.BuildSamplerVariable(this); + auto overload = std::get<0>(p); + auto param = std::get<1>(p); + auto expr = std::get<2>(p); - auto args = param.args(this); - // Make Resolver visit the Node about to be removed - WrapInFunction(args.back()); - args.pop_back(); - if (NumCoordinateAxes(param.texture_dimension) == 2) { - args.push_back(Construct(Source{{12, 34}}, ty.vec2<i32>(), - Construct(ty.i32(), offset.x), offset.y)); - } else if (NumCoordinateAxes(param.texture_dimension) == 3) { - args.push_back(Construct(Source{{12, 34}}, ty.vec3<i32>(), offset.x, - Construct(ty.vec2<i32>(), offset.y, offset.z))); - } - auto* call = Call(param.function, args); - Func("func", {}, ty.void_(), {CallStmt(call)}, - {create<ast::StageDecoration>(ast::PipelineStage::kFragment)}); - if (offset.is_valid) { - EXPECT_TRUE(r()->Resolve()) << r()->error(); - } else { - EXPECT_FALSE(r()->Resolve()); - std::stringstream err; - err << "12:34 error: each offset component of '" << param.function - << "' must be at least -8 and at most 7. found: '" - << std::to_string(offset.illegal_value) << "'"; - EXPECT_EQ(r()->error(), err.str()); - } -} + // Build the global texture and sampler variables + overload.BuildTextureVariable(this); + overload.BuildSamplerVariable(this); -TEST_P(IntrinsicTextureSamplerValidationTest, EmptyVectorConstructor) { - auto& p = GetParam(); - auto param = std::get<0>(p); - param.BuildTextureVariable(this); - param.BuildSamplerVariable(this); + // Build the module-scope let 'G' with the offset value + GlobalConst("G", nullptr, expr({}, *this)); - auto args = param.args(this); - // Make Resolver visit the Node about to be removed - WrapInFunction(args.back()); - args.pop_back(); - if (NumCoordinateAxes(param.texture_dimension) == 2) { - args.push_back(Construct(Source{{12, 34}}, ty.vec2<i32>())); - } else if (NumCoordinateAxes(param.texture_dimension) == 3) { - args.push_back(Construct(Source{{12, 34}}, ty.vec3<i32>())); - } + auto args = overload.args(this); + auto*& arg_to_replace = + (param.position == Position::kFirst) ? args.front() : args.back(); - auto* call = Call(param.function, args); - Func("func", {}, ty.void_(), {CallStmt(call)}, - {create<ast::StageDecoration>(ast::PipelineStage::kFragment)}); - EXPECT_TRUE(r()->Resolve()) << r()->error(); -} + // Make the expression to be replaced, reachable. This keeps the resolver + // happy. + WrapInFunction(arg_to_replace); -TEST_P(IntrinsicTextureSamplerValidationTest, GlobalConst) { - auto& p = GetParam(); - auto param = std::get<0>(p); - auto offset = std::get<1>(p); - param.BuildTextureVariable(this); - param.BuildSamplerVariable(this); + arg_to_replace = Expr(Source{{12, 34}}, "G"); - auto args = param.args(this); - // Make Resolver visit the Node about to be removed - WrapInFunction(args.back()); - args.pop_back(); - GlobalConst("offset_2d", ty.vec2<i32>(), vec2<i32>(offset.x, offset.y)); - GlobalConst("offset_3d", ty.vec3<i32>(), - vec3<i32>(offset.x, offset.y, offset.z)); - if (NumCoordinateAxes(param.texture_dimension) == 2) { - args.push_back(Expr(Source{{12, 34}}, "offset_2d")); - } else if (NumCoordinateAxes(param.texture_dimension) == 3) { - args.push_back(Expr(Source{{12, 34}}, "offset_3d")); - } + // Call the intrinsic with the constexpr argument replaced + Func("func", {}, ty.void_(), {CallStmt(Call(overload.function, args))}, + {Stage(ast::PipelineStage::kFragment)}); - auto* call = Call(param.function, args); - Func("func", {}, ty.void_(), {CallStmt(call)}, - {create<ast::StageDecoration>(ast::PipelineStage::kFragment)}); EXPECT_FALSE(r()->Resolve()); std::stringstream err; - err << "12:34 error: '" << param.function - << "' offset parameter must be a const_expression"; + err << "12:34 error: the " << param.name + << " argument must be a const_expression"; EXPECT_EQ(r()->error(), err.str()); } -TEST_P(IntrinsicTextureSamplerValidationTest, ScalarConst) { - auto& p = GetParam(); - auto param = std::get<0>(p); - auto offset = std::get<1>(p); - param.BuildTextureVariable(this); - param.BuildSamplerVariable(this); - auto* x = Const("x", ty.i32(), Construct(ty.i32(), offset.x)); +INSTANTIATE_TEST_SUITE_P( + Offset2D, + IntrinsicTextureConstExprArgValidationTest, + testing::Combine( + testing::ValuesIn(TextureCases({ + ValidTextureOverload::kSample2dOffsetF32, + ValidTextureOverload::kSample2dArrayOffsetF32, + ValidTextureOverload::kSampleDepth2dOffsetF32, + ValidTextureOverload::kSampleDepth2dArrayOffsetF32, + ValidTextureOverload::kSampleBias2dOffsetF32, + ValidTextureOverload::kSampleBias2dArrayOffsetF32, + ValidTextureOverload::kSampleLevel2dOffsetF32, + ValidTextureOverload::kSampleLevel2dArrayOffsetF32, + ValidTextureOverload::kSampleLevelDepth2dOffsetF32, + ValidTextureOverload::kSampleLevelDepth2dArrayOffsetF32, + ValidTextureOverload::kSampleGrad2dOffsetF32, + ValidTextureOverload::kSampleGrad2dArrayOffsetF32, + ValidTextureOverload::kSampleCompareDepth2dOffsetF32, + ValidTextureOverload::kSampleCompareDepth2dArrayOffsetF32, + ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32, + ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32, + })), + testing::Values(Parameter{"offset", Position::kLast, -8, 7}), + testing::Values( + Constexpr{Constexpr::kValid, Constexpr::Kind::kEmptyVec2}, + Constexpr{Constexpr::kValid, Constexpr::Kind::kVec2, -1, 1}, + Constexpr{Constexpr::kValid, Constexpr::Kind::kVec2, 7, -8}, + Constexpr{0, Constexpr::Kind::kVec2, 8, 0}, + Constexpr{1, Constexpr::Kind::kVec2, 0, 8}, + Constexpr{0, Constexpr::Kind::kVec2, -9, 0}, + Constexpr{1, Constexpr::Kind::kVec2, 0, -9}, + Constexpr{0, Constexpr::Kind::kVec2, 8, 8}, + Constexpr{0, Constexpr::Kind::kVec2, -9, -9}))); - auto args = param.args(this); - // Make Resolver visit the Node about to be removed - WrapInFunction(args.back()); - args.pop_back(); - if (NumCoordinateAxes(param.texture_dimension) == 2) { - args.push_back(Construct(Source{{12, 34}}, ty.vec2<i32>(), x, offset.y)); - } else if (NumCoordinateAxes(param.texture_dimension) == 3) { - args.push_back( - Construct(Source{{12, 34}}, ty.vec3<i32>(), x, offset.y, offset.z)); - } +INSTANTIATE_TEST_SUITE_P( + Offset3D, + IntrinsicTextureConstExprArgValidationTest, + testing::Combine( + testing::ValuesIn(TextureCases({ + ValidTextureOverload::kSample3dOffsetF32, + ValidTextureOverload::kSampleBias3dOffsetF32, + ValidTextureOverload::kSampleLevel3dOffsetF32, + ValidTextureOverload::kSampleGrad3dOffsetF32, + })), + testing::Values(Parameter{"offset", Position::kLast, -8, 7}), + testing::Values( + Constexpr{Constexpr::kValid, Constexpr::Kind::kEmptyVec3}, + Constexpr{Constexpr::kValid, Constexpr::Kind::kVec3, 0, 0, 0}, + Constexpr{Constexpr::kValid, Constexpr::Kind::kVec3, 7, -8, 7}, + Constexpr{0, Constexpr::Kind::kVec3, 10, 0, 0}, + Constexpr{1, Constexpr::Kind::kVec3, 0, 10, 0}, + Constexpr{2, Constexpr::Kind::kVec3, 0, 0, 10}, + Constexpr{0, Constexpr::Kind::kVec3, 10, 11, 12}, + Constexpr{0, Constexpr::Kind::kVec3_Scalar_Vec2, 10, 0, 0}, + Constexpr{1, Constexpr::Kind::kVec3_Scalar_Vec2, 0, 10, 0}, + Constexpr{2, Constexpr::Kind::kVec3_Scalar_Vec2, 0, 0, 10}, + Constexpr{0, Constexpr::Kind::kVec3_Scalar_Vec2, 10, 11, 12}, + Constexpr{0, Constexpr::Kind::kVec3_Vec2_Scalar, 10, 0, 0}, + Constexpr{1, Constexpr::Kind::kVec3_Vec2_Scalar, 0, 10, 0}, + Constexpr{2, Constexpr::Kind::kVec3_Vec2_Scalar, 0, 0, 10}, + Constexpr{0, Constexpr::Kind::kVec3_Vec2_Scalar, 10, 11, 12}))); - auto* call = Call(param.function, args); - Func("func", {}, ty.void_(), {Decl(x), CallStmt(call)}, - {create<ast::StageDecoration>(ast::PipelineStage::kFragment)}); - EXPECT_FALSE(r()->Resolve()); - std::stringstream err; - err << "12:34 error: '" << param.function - << "' offset parameter must be a const_expression"; - EXPECT_EQ(r()->error(), err.str()); -} +INSTANTIATE_TEST_SUITE_P( + Component, + IntrinsicTextureConstExprArgValidationTest, + testing::Combine( + testing::ValuesIn( + TextureCases({ValidTextureOverload::kGather2dF32, + ValidTextureOverload::kGather2dOffsetF32, + ValidTextureOverload::kGather2dArrayF32, + ValidTextureOverload::kGather2dArrayOffsetF32, + ValidTextureOverload::kGatherCubeF32, + ValidTextureOverload::kGatherCubeArrayF32})), + testing::Values(Parameter{"component", Position::kFirst, 0, 3}), + testing::Values( + Constexpr{Constexpr::kValid, Constexpr::Kind::kScalar, 0}, + Constexpr{Constexpr::kValid, Constexpr::Kind::kScalar, 1}, + Constexpr{Constexpr::kValid, Constexpr::Kind::kScalar, 2}, + Constexpr{Constexpr::kValid, Constexpr::Kind::kScalar, 3}, + Constexpr{0, Constexpr::Kind::kScalar, 4}, + Constexpr{0, Constexpr::Kind::kScalar, 123}, + Constexpr{0, Constexpr::Kind::kScalar, -1}))); -INSTANTIATE_TEST_SUITE_P(IntrinsicTextureSamplerValidationTest, - IntrinsicTextureSamplerValidationTest, - testing::Combine(testing::ValuesIn(ValidCases()), - testing::ValuesIn(OffsetCases()))); -} // namespace TextureSamplerOffset +} // namespace texture_constexpr_args } // namespace } // namespace resolver
diff --git a/src/resolver/resolver.h b/src/resolver/resolver.h index e7f6deb..ff4cf96 100644 --- a/src/resolver/resolver.h +++ b/src/resolver/resolver.h
@@ -45,7 +45,6 @@ class CallExpression; class CallStatement; class CaseStatement; -class ConstructorExpression; class ForLoopStatement; class Function; class IdentifierExpression;
diff --git a/src/resolver/resolver_validation.cc b/src/resolver/resolver_validation.cc index 7c6afef..b15aaf5 100644 --- a/src/resolver/resolver_validation.cc +++ b/src/resolver/resolver_validation.cc
@@ -1505,22 +1505,30 @@ if (!intrinsic) { return false; } + std::string func_name = intrinsic->str(); auto& signature = intrinsic->Signature(); - auto index = signature.IndexOf(sem::ParameterUsage::kOffset); - if (index > -1) { + + auto check_arg_is_constexpr = [&](sem::ParameterUsage usage, int min, + int max) { + auto index = signature.IndexOf(usage); + if (index < 0) { + return true; + } + std::string name = sem::str(usage); auto* arg = call->Arguments()[index]; if (auto values = arg->ConstantValue()) { // Assert that the constant values are of the expected type. - if (!values.Type()->Is<sem::Vector>() || + if (!values.Type()->IsAnyOf<sem::I32, sem::Vector>() || !values.ElementType()->Is<sem::I32>()) { TINT_ICE(Resolver, diagnostics_) - << "failed to resolve '" + func_name + "' offset parameter type"; + << "failed to resolve '" + func_name + "' " << name + << " parameter type"; return false; } // Currently const_expr is restricted to literals and type constructors. - // Check that that's all we have for the offset parameter. + // Check that that's all we have for the parameter. bool is_const_expr = true; ast::TraverseExpressions( arg->Declaration(), diagnostics_, [&](const ast::Expression* e) { @@ -1531,25 +1539,37 @@ return ast::TraverseAction::Stop; }); if (is_const_expr) { - for (auto offset : values.Elements()) { - auto offset_value = offset.i32; - if (offset_value < -8 || offset_value > 7) { - AddError("each offset component of '" + func_name + - "' must be at least -8 and at most 7. " - "found: '" + - std::to_string(offset_value) + "'", - arg->Declaration()->source); + auto vector = intrinsic->Parameters()[index]->Type()->Is<sem::Vector>(); + for (size_t i = 0; i < values.Elements().size(); i++) { + auto value = values.Elements()[i].i32; + if (value < min || value > max) { + if (vector) { + AddError("each component of the " + name + + " argument must be at least " + std::to_string(min) + + " and at most " + std::to_string(max) + ". " + name + + " component " + std::to_string(i) + " is " + + std::to_string(value), + arg->Declaration()->source); + } else { + AddError("the " + name + " argument must be at least " + + std::to_string(min) + " and at most " + + std::to_string(max) + ". " + name + " is " + + std::to_string(value), + arg->Declaration()->source); + } return false; } } return true; } } - AddError("'" + func_name + "' offset parameter must be a const_expression", + AddError("the " + name + " argument must be a const_expression", arg->Declaration()->source); return false; - } - return true; + }; + + return check_arg_is_constexpr(sem::ParameterUsage::kOffset, -8, 7) && + check_arg_is_constexpr(sem::ParameterUsage::kComponent, 0, 3); } bool Resolver::ValidateFunctionCall(const sem::Call* call) {
diff --git a/src/sem/intrinsic.cc b/src/sem/intrinsic.cc index 13ccd21..bc90549 100644 --- a/src/sem/intrinsic.cc +++ b/src/sem/intrinsic.cc
@@ -50,6 +50,8 @@ bool IsTextureIntrinsic(IntrinsicType i) { return IsImageQueryIntrinsic(i) || i == IntrinsicType::kTextureLoad || + i == IntrinsicType::kTextureGather || + i == IntrinsicType::kTextureGatherCompare || i == IntrinsicType::kTextureSample || i == IntrinsicType::kTextureSampleLevel || i == IntrinsicType::kTextureSampleBias ||
diff --git a/src/sem/intrinsic_type.cc b/src/sem/intrinsic_type.cc index 417494d..76208f6 100644 --- a/src/sem/intrinsic_type.cc +++ b/src/sem/intrinsic_type.cc
@@ -261,6 +261,12 @@ if (name == "textureDimensions") { return IntrinsicType::kTextureDimensions; } + if (name == "textureGather") { + return IntrinsicType::kTextureGather; + } + if (name == "textureGatherCompare") { + return IntrinsicType::kTextureGatherCompare; + } if (name == "textureNumLayers") { return IntrinsicType::kTextureNumLayers; } @@ -488,6 +494,10 @@ return "workgroupBarrier"; case IntrinsicType::kTextureDimensions: return "textureDimensions"; + case IntrinsicType::kTextureGather: + return "textureGather"; + case IntrinsicType::kTextureGatherCompare: + return "textureGatherCompare"; case IntrinsicType::kTextureNumLayers: return "textureNumLayers"; case IntrinsicType::kTextureNumLevels:
diff --git a/src/sem/intrinsic_type.h b/src/sem/intrinsic_type.h index 3274be3..3ef2fe3 100644 --- a/src/sem/intrinsic_type.h +++ b/src/sem/intrinsic_type.h
@@ -111,6 +111,8 @@ kUnpack4x8unorm, kWorkgroupBarrier, kTextureDimensions, + kTextureGather, + kTextureGatherCompare, kTextureNumLayers, kTextureNumLevels, kTextureNumSamples,
diff --git a/src/sem/parameter_usage.cc b/src/sem/parameter_usage.cc index 74b32b6..753283b 100644 --- a/src/sem/parameter_usage.cc +++ b/src/sem/parameter_usage.cc
@@ -35,6 +35,8 @@ return "array_index"; case ParameterUsage::kBias: return "bias"; + case ParameterUsage::kComponent: + return "component"; case ParameterUsage::kCoords: return "coords"; case ParameterUsage::kDdx:
diff --git a/src/sem/parameter_usage.h b/src/sem/parameter_usage.h index 79ab693..c6dbf39 100644 --- a/src/sem/parameter_usage.h +++ b/src/sem/parameter_usage.h
@@ -34,6 +34,7 @@ kNone = -1, kArrayIndex, kBias, + kComponent, kCoords, kDdx, kDdy,
diff --git a/src/writer/glsl/generator_impl.cc b/src/writer/glsl/generator_impl.cc index b2eb4f4..3e7185a 100644 --- a/src/writer/glsl/generator_impl.cc +++ b/src/writer/glsl/generator_impl.cc
@@ -480,7 +480,7 @@ const sem::Intrinsic* intrinsic) { auto* expr = call->Declaration(); if (intrinsic->IsTexture()) { - return EmitTextureCall(out, expr, intrinsic); + return EmitTextureCall(out, call, intrinsic); } if (intrinsic->Type() == sem::IntrinsicType::kSelect) { return EmitSelectCall(out, expr); @@ -1098,11 +1098,12 @@ } bool GeneratorImpl::EmitTextureCall(std::ostream& out, - const ast::CallExpression* expr, + const sem::Call* call, const sem::Intrinsic* intrinsic) { using Usage = sem::ParameterUsage; auto& signature = intrinsic->Signature(); + auto* expr = call->Declaration(); auto arguments = expr->args; // Returns the argument with the given usage @@ -1184,6 +1185,12 @@ case sem::IntrinsicType::kTextureSampleLevel: out << "textureLod("; break; + case sem::IntrinsicType::kTextureGather: + case sem::IntrinsicType::kTextureGatherCompare: + out << (intrinsic->Signature().IndexOf(sem::ParameterUsage::kOffset) < 0 + ? "textureGather(" + : "textureGatherOffset("); + break; case sem::IntrinsicType::kTextureSampleGrad: out << "textureGrad("; break; @@ -1232,9 +1239,9 @@ } } - for (auto usage : - {Usage::kDepthRef, Usage::kBias, Usage::kLevel, Usage::kDdx, Usage::kDdy, - Usage::kSampleIndex, Usage::kOffset, Usage::kValue}) { + for (auto usage : {Usage::kDepthRef, Usage::kBias, Usage::kLevel, Usage::kDdx, + Usage::kDdy, Usage::kSampleIndex, Usage::kOffset, + Usage::kComponent, Usage::kValue}) { if (auto* e = arg(usage)) { out << ", "; if (!EmitExpression(out, e)) {
diff --git a/src/writer/glsl/generator_impl.h b/src/writer/glsl/generator_impl.h index 8595e08..a3090e7 100644 --- a/src/writer/glsl/generator_impl.h +++ b/src/writer/glsl/generator_impl.h
@@ -165,11 +165,11 @@ /// Handles generating a call to a texture function (`textureSample`, /// `textureSampleGrad`, etc) /// @param out the output of the expression stream - /// @param expr the call expression + /// @param call the call expression /// @param intrinsic the semantic information for the texture intrinsic /// @returns true if the call expression is emitted bool EmitTextureCall(std::ostream& out, - const ast::CallExpression* expr, + const sem::Call* call, const sem::Intrinsic* intrinsic); /// Handles generating a call to the `select()` intrinsic /// @param out the output of the expression stream
diff --git a/src/writer/glsl/generator_impl_intrinsic_texture_test.cc b/src/writer/glsl/generator_impl_intrinsic_texture_test.cc index 04fff42..1aca03e 100644 --- a/src/writer/glsl/generator_impl_intrinsic_texture_test.cc +++ b/src/writer/glsl/generator_impl_intrinsic_texture_test.cc
@@ -63,6 +63,42 @@ case ValidTextureOverload::kDimensionsStorageWO2dArray: case ValidTextureOverload::kDimensionsStorageWO3d: return {"imageSize"}; + case ValidTextureOverload::kGather2dF32: + return R"(textureGather(tint_symbol, vec2(1.0f, 2.0f), 0))"; + case ValidTextureOverload::kGather2dOffsetF32: + return R"(textureGatherOffset(tint_symbol, vec2(1.0f, 2.0f), ivec2(3, 4), 0))"; + case ValidTextureOverload::kGather2dArrayF32: + return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, float(3)), 0))"; + case ValidTextureOverload::kGather2dArrayOffsetF32: + return R"(textureGatherOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5), 0))"; + case ValidTextureOverload::kGatherCubeF32: + return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 0))"; + case ValidTextureOverload::kGatherCubeArrayF32: + return R"(textureGather(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4)), 0))"; + case ValidTextureOverload::kGatherDepth2dF32: + return R"(textureGather(tint_symbol, vec2(1.0f, 2.0f)))"; + case ValidTextureOverload::kGatherDepth2dOffsetF32: + return R"(textureGatherOffset(tint_symbol, vec2(1.0f, 2.0f), ivec2(3, 4)))"; + case ValidTextureOverload::kGatherDepth2dArrayF32: + return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, float(3))))"; + case ValidTextureOverload::kGatherDepth2dArrayOffsetF32: + return R"(textureGatherOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5)))"; + case ValidTextureOverload::kGatherDepthCubeF32: + return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, 3.0f)))"; + case ValidTextureOverload::kGatherDepthCubeArrayF32: + return R"(textureGather(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4))))"; + case ValidTextureOverload::kGatherCompareDepth2dF32: + return R"(textureGather(tint_symbol, vec2(1.0f, 2.0f), 3.0f))"; + case ValidTextureOverload::kGatherCompareDepth2dOffsetF32: + return R"(textureGatherOffset(tint_symbol, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5)))"; + case ValidTextureOverload::kGatherCompareDepth2dArrayF32: + return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, float(3)), 4.0f))"; + case ValidTextureOverload::kGatherCompareDepth2dArrayOffsetF32: + return R"(textureGatherOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), 4.0f, ivec2(5, 6)))"; + case ValidTextureOverload::kGatherCompareDepthCubeF32: + return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 4.0f))"; + case ValidTextureOverload::kGatherCompareDepthCubeArrayF32: + return R"(textureGather(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))"; case ValidTextureOverload::kNumLayers2dArray: case ValidTextureOverload::kNumLayersDepth2dArray: case ValidTextureOverload::kNumLayersCubeArray:
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc index 290f898..122f50e 100644 --- a/src/writer/hlsl/generator_impl.cc +++ b/src/writer/hlsl/generator_impl.cc
@@ -671,7 +671,7 @@ const sem::Intrinsic* intrinsic) { auto* expr = call->Declaration(); if (intrinsic->IsTexture()) { - return EmitTextureCall(out, expr, intrinsic); + return EmitTextureCall(out, call, intrinsic); } if (intrinsic->Type() == sem::IntrinsicType::kSelect) { return EmitSelectCall(out, expr); @@ -1749,11 +1749,12 @@ } bool GeneratorImpl::EmitTextureCall(std::ostream& out, - const ast::CallExpression* expr, + const sem::Call* call, const sem::Intrinsic* intrinsic) { using Usage = sem::ParameterUsage; auto& signature = intrinsic->Signature(); + auto* expr = call->Declaration(); auto arguments = expr->args; // Returns the argument with the given usage @@ -1987,6 +1988,30 @@ pack_level_in_coords = true; } break; + case sem::IntrinsicType::kTextureGather: + out << ".Gather"; + if (intrinsic->Parameters()[0]->Usage() == + sem::ParameterUsage::kComponent) { + switch (call->Arguments()[0]->ConstantValue().Elements()[0].i32) { + case 0: + out << "Red"; + break; + case 1: + out << "Green"; + break; + case 2: + out << "Blue"; + break; + case 3: + out << "Alpha"; + break; + } + } + out << "("; + break; + case sem::IntrinsicType::kTextureGatherCompare: + out << ".GatherCmp("; + break; case sem::IntrinsicType::kTextureStore: out << "["; break;
diff --git a/src/writer/hlsl/generator_impl.h b/src/writer/hlsl/generator_impl.h index b23897d..c2532a2 100644 --- a/src/writer/hlsl/generator_impl.h +++ b/src/writer/hlsl/generator_impl.h
@@ -208,11 +208,11 @@ /// Handles generating a call to a texture function (`textureSample`, /// `textureSampleGrad`, etc) /// @param out the output of the expression stream - /// @param expr the call expression + /// @param call the call expression /// @param intrinsic the semantic information for the texture intrinsic /// @returns true if the call expression is emitted bool EmitTextureCall(std::ostream& out, - const ast::CallExpression* expr, + const sem::Call* call, const sem::Intrinsic* intrinsic); /// Handles generating a call to the `select()` intrinsic /// @param out the output of the expression stream
diff --git a/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc b/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc index 73a581c..fd77b9e 100644 --- a/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc +++ b/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
@@ -135,6 +135,42 @@ )", "tint_tmp.xy;", }; + case ValidTextureOverload::kGather2dF32: + return R"(tint_symbol.GatherRed(tint_symbol_1, float2(1.0f, 2.0f)))"; + case ValidTextureOverload::kGather2dOffsetF32: + return R"(tint_symbol.GatherRed(tint_symbol_1, float2(1.0f, 2.0f), int2(3, 4)))"; + case ValidTextureOverload::kGather2dArrayF32: + return R"(tint_symbol.GatherRed(tint_symbol_1, float3(1.0f, 2.0f, float(3))))"; + case ValidTextureOverload::kGather2dArrayOffsetF32: + return R"(tint_symbol.GatherRed(tint_symbol_1, float3(1.0f, 2.0f, float(3)), int2(4, 5)))"; + case ValidTextureOverload::kGatherCubeF32: + return R"(tint_symbol.GatherRed(tint_symbol_1, float3(1.0f, 2.0f, 3.0f)))"; + case ValidTextureOverload::kGatherCubeArrayF32: + return R"(tint_symbol.GatherRed(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4))))"; + case ValidTextureOverload::kGatherDepth2dF32: + return R"(tint_symbol.Gather(tint_symbol_1, float2(1.0f, 2.0f)))"; + case ValidTextureOverload::kGatherDepth2dOffsetF32: + return R"(tint_symbol.Gather(tint_symbol_1, float2(1.0f, 2.0f), int2(3, 4)))"; + case ValidTextureOverload::kGatherDepth2dArrayF32: + return R"(tint_symbol.Gather(tint_symbol_1, float3(1.0f, 2.0f, float(3))))"; + case ValidTextureOverload::kGatherDepth2dArrayOffsetF32: + return R"(tint_symbol.Gather(tint_symbol_1, float3(1.0f, 2.0f, float(3)), int2(4, 5)))"; + case ValidTextureOverload::kGatherDepthCubeF32: + return R"(tint_symbol.Gather(tint_symbol_1, float3(1.0f, 2.0f, 3.0f)))"; + case ValidTextureOverload::kGatherDepthCubeArrayF32: + return R"(tint_symbol.Gather(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4))))"; + case ValidTextureOverload::kGatherCompareDepth2dF32: + return R"(tint_symbol.GatherCmp(tint_symbol_1, float2(1.0f, 2.0f), 3.0f))"; + case ValidTextureOverload::kGatherCompareDepth2dOffsetF32: + return R"(tint_symbol.GatherCmp(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))"; + case ValidTextureOverload::kGatherCompareDepth2dArrayF32: + return R"(tint_symbol.GatherCmp(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f))"; + case ValidTextureOverload::kGatherCompareDepth2dArrayOffsetF32: + return R"(tint_symbol.GatherCmp(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f, int2(5, 6)))"; + case ValidTextureOverload::kGatherCompareDepthCubeF32: + return R"(tint_symbol.GatherCmp(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))"; + case ValidTextureOverload::kGatherCompareDepthCubeArrayF32: + return R"(tint_symbol.GatherCmp(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))"; case ValidTextureOverload::kNumLayers2dArray: case ValidTextureOverload::kNumLayersDepth2dArray: case ValidTextureOverload::kNumLayersCubeArray:
diff --git a/src/writer/msl/generator_impl.cc b/src/writer/msl/generator_impl.cc index 4982639..a4f8b72 100644 --- a/src/writer/msl/generator_impl.cc +++ b/src/writer/msl/generator_impl.cc
@@ -582,7 +582,7 @@ return EmitAtomicCall(out, expr, intrinsic); } if (intrinsic->IsTexture()) { - return EmitTextureCall(out, expr, intrinsic); + return EmitTextureCall(out, call, intrinsic); } auto name = generate_builtin_name(intrinsic); @@ -839,12 +839,13 @@ } bool GeneratorImpl::EmitTextureCall(std::ostream& out, - const ast::CallExpression* expr, + const sem::Call* call, const sem::Intrinsic* intrinsic) { using Usage = sem::ParameterUsage; auto& signature = intrinsic->Signature(); - auto arguments = expr->args; + auto* expr = call->Declaration(); + auto& arguments = call->Arguments(); // Returns the argument with the given usage auto arg = [&](Usage usage) { @@ -852,7 +853,7 @@ return (idx >= 0) ? arguments[idx] : nullptr; }; - auto* texture = arg(Usage::kTexture); + auto* texture = arg(Usage::kTexture)->Declaration(); if (!texture) { TINT_ICE(Writer, diagnostics_) << "missing texture arg"; return false; @@ -908,7 +909,7 @@ } out << ".get_" << name << "("; if (auto* level = arg(Usage::kLevel)) { - if (!EmitExpression(out, level)) { + if (!EmitExpression(out, level->Declaration())) { return false; } } @@ -978,6 +979,12 @@ case sem::IntrinsicType::kTextureSampleCompareLevel: out << ".sample_compare("; break; + case sem::IntrinsicType::kTextureGather: + out << ".gather("; + break; + case sem::IntrinsicType::kTextureGatherCompare: + out << ".gather_compare("; + break; case sem::IntrinsicType::kTextureLoad: out << ".read("; lod_param_is_named = false; @@ -1003,14 +1010,12 @@ {Usage::kValue, Usage::kSampler, Usage::kCoords, Usage::kArrayIndex, Usage::kDepthRef, Usage::kSampleIndex}) { if (auto* e = arg(usage)) { - auto* sem_e = program_->Sem().Get(e); - maybe_write_comma(); // Cast the coordinates to unsigned integers if necessary. bool casted = false; if (usage == Usage::kCoords && - sem_e->Type()->UnwrapRef()->is_integer_scalar_or_vector()) { + e->Type()->UnwrapRef()->is_integer_scalar_or_vector()) { casted = true; switch (texture_type->dim()) { case ast::TextureDimension::k1d: @@ -1030,7 +1035,7 @@ } } - if (!EmitExpression(out, e)) + if (!EmitExpression(out, e->Declaration())) return false; if (casted) { @@ -1042,7 +1047,7 @@ if (auto* bias = arg(Usage::kBias)) { maybe_write_comma(); out << "bias("; - if (!EmitExpression(out, bias)) { + if (!EmitExpression(out, bias->Declaration())) { return false; } out << ")"; @@ -1052,7 +1057,7 @@ if (lod_param_is_named) { out << "level("; } - if (!EmitExpression(out, level)) { + if (!EmitExpression(out, level->Declaration())) { return false; } if (lod_param_is_named) { @@ -1087,23 +1092,59 @@ return false; } } - if (!EmitExpression(out, ddx)) { + if (!EmitExpression(out, ddx->Declaration())) { return false; } out << ", "; - if (!EmitExpression(out, arg(Usage::kDdy))) { + if (!EmitExpression(out, arg(Usage::kDdy)->Declaration())) { return false; } out << ")"; } + bool has_offset = false; if (auto* offset = arg(Usage::kOffset)) { + has_offset = true; maybe_write_comma(); - if (!EmitExpression(out, offset)) { + if (!EmitExpression(out, offset->Declaration())) { return false; } } + if (auto* component = arg(Usage::kComponent)) { + maybe_write_comma(); + if (!has_offset) { + // offset argument may need to be provided if we have a component. + switch (texture_type->dim()) { + case ast::TextureDimension::k2d: + case ast::TextureDimension::k2dArray: + out << "int2(0), "; + break; + default: + break; // Other texture dimensions don't have an offset + } + } + auto c = component->ConstantValue().Elements()[0].i32; + switch (c) { + case 0: + out << "component::x"; + break; + case 1: + out << "component::y"; + break; + case 2: + out << "component::z"; + break; + case 3: + out << "component::w"; + break; + default: + TINT_ICE(Writer, diagnostics_) + << "invalid textureGather component: " << c; + break; + } + } + out << ")"; return true;
diff --git a/src/writer/msl/generator_impl.h b/src/writer/msl/generator_impl.h index da99716..ab3af1d 100644 --- a/src/writer/msl/generator_impl.h +++ b/src/writer/msl/generator_impl.h
@@ -187,11 +187,11 @@ /// Handles generating a call to a texture function (`textureSample`, /// `textureSampleGrad`, etc) /// @param out the output of the expression stream - /// @param expr the call expression + /// @param call the call expression /// @param intrinsic the semantic information for the texture intrinsic /// @returns true if the call expression is emitted bool EmitTextureCall(std::ostream& out, - const ast::CallExpression* expr, + const sem::Call* call, const sem::Intrinsic* intrinsic); /// Handles generating a call to the `dot()` intrinsic /// @param out the output of the expression stream
diff --git a/src/writer/msl/generator_impl_intrinsic_texture_test.cc b/src/writer/msl/generator_impl_intrinsic_texture_test.cc index bcee2f8..d3e298c 100644 --- a/src/writer/msl/generator_impl_intrinsic_texture_test.cc +++ b/src/writer/msl/generator_impl_intrinsic_texture_test.cc
@@ -55,6 +55,42 @@ return R"(int2(texture.get_width(1), texture.get_height(1)))"; case ValidTextureOverload::kDimensions3dLevel: return R"(int3(texture.get_width(1), texture.get_height(1), texture.get_depth(1)))"; + case ValidTextureOverload::kGather2dF32: + return R"(texture.gather(sampler, float2(1.0f, 2.0f), int2(0), component::x))"; + case ValidTextureOverload::kGather2dOffsetF32: + return R"(texture.gather(sampler, float2(1.0f, 2.0f), int2(3, 4), component::x))"; + case ValidTextureOverload::kGather2dArrayF32: + return R"(texture.gather(sampler, float2(1.0f, 2.0f), 3, int2(0), component::x))"; + case ValidTextureOverload::kGather2dArrayOffsetF32: + return R"(texture.gather(sampler, float2(1.0f, 2.0f), 3, int2(4, 5), component::x))"; + case ValidTextureOverload::kGatherCubeF32: + return R"(texture.gather(sampler, float3(1.0f, 2.0f, 3.0f), component::x))"; + case ValidTextureOverload::kGatherCubeArrayF32: + return R"(texture.gather(sampler, float3(1.0f, 2.0f, 3.0f), 4, component::x))"; + case ValidTextureOverload::kGatherDepth2dF32: + return R"(texture.gather(sampler, float2(1.0f, 2.0f)))"; + case ValidTextureOverload::kGatherDepth2dOffsetF32: + return R"(texture.gather(sampler, float2(1.0f, 2.0f), int2(3, 4)))"; + case ValidTextureOverload::kGatherDepth2dArrayF32: + return R"(texture.gather(sampler, float2(1.0f, 2.0f), 3))"; + case ValidTextureOverload::kGatherDepth2dArrayOffsetF32: + return R"(texture.gather(sampler, float2(1.0f, 2.0f), 3, int2(4, 5)))"; + case ValidTextureOverload::kGatherDepthCubeF32: + return R"(texture.gather(sampler, float3(1.0f, 2.0f, 3.0f)))"; + case ValidTextureOverload::kGatherDepthCubeArrayF32: + return R"(texture.gather(sampler, float3(1.0f, 2.0f, 3.0f), 4))"; + case ValidTextureOverload::kGatherCompareDepth2dF32: + return R"(texture.gather_compare(sampler, float2(1.0f, 2.0f), 3.0f))"; + case ValidTextureOverload::kGatherCompareDepth2dOffsetF32: + return R"(texture.gather_compare(sampler, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))"; + case ValidTextureOverload::kGatherCompareDepth2dArrayF32: + return R"(texture.gather_compare(sampler, float2(1.0f, 2.0f), 3, 4.0f))"; + case ValidTextureOverload::kGatherCompareDepth2dArrayOffsetF32: + return R"(texture.gather_compare(sampler, float2(1.0f, 2.0f), 3, 4.0f, int2(5, 6)))"; + case ValidTextureOverload::kGatherCompareDepthCubeF32: + return R"(texture.gather_compare(sampler, float3(1.0f, 2.0f, 3.0f), 4.0f))"; + case ValidTextureOverload::kGatherCompareDepthCubeArrayF32: + return R"(texture.gather_compare(sampler, float3(1.0f, 2.0f, 3.0f), 4, 5.0f))"; case ValidTextureOverload::kNumLayers2dArray: case ValidTextureOverload::kNumLayersCubeArray: case ValidTextureOverload::kNumLayersDepth2dArray:
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc index ea82524..ea7b5b5 100644 --- a/src/writer/spirv/builder.cc +++ b/src/writer/spirv/builder.cc
@@ -2987,6 +2987,29 @@ spirv_params.emplace_back(gen_arg(Usage::kValue)); break; } + case IntrinsicType::kTextureGather: { + op = spv::Op::OpImageGather; + append_result_type_and_id_to_spirv_params(); + if (!append_image_and_coords_to_spirv_params()) { + return false; + } + if (signature.IndexOf(Usage::kComponent) < 0) { + spirv_params.emplace_back( + Operand::Int(GenerateConstantIfNeeded(ScalarConstant::I32(0)))); + } else { + spirv_params.emplace_back(gen_arg(Usage::kComponent)); + } + break; + } + case IntrinsicType::kTextureGatherCompare: { + op = spv::Op::OpImageDrefGather; + append_result_type_and_id_to_spirv_params(); + if (!append_image_and_coords_to_spirv_params()) { + return false; + } + spirv_params.emplace_back(gen_arg(Usage::kDepthRef)); + break; + } case IntrinsicType::kTextureSample: { op = spv::Op::OpImageSampleImplicitLod; append_result_type_and_id_to_spirv_params_for_read();
diff --git a/src/writer/spirv/builder_intrinsic_texture_test.cc b/src/writer/spirv/builder_intrinsic_texture_test.cc index fd131c4..b100027 100644 --- a/src/writer/spirv/builder_intrinsic_texture_test.cc +++ b/src/writer/spirv/builder_intrinsic_texture_test.cc
@@ -575,6 +575,520 @@ R"( OpCapability ImageQuery )"}; + case ValidTextureOverload::kGather2dF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 0 0 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 2 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%17 = OpConstantComposite %14 %15 %16 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 0 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%8 = OpImageGather %9 %13 %17 %19 +)", + R"( +)"}; + case ValidTextureOverload::kGather2dOffsetF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 0 0 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 2 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%17 = OpConstantComposite %14 %15 %16 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 0 +%20 = OpTypeVector %18 2 +%21 = OpConstant %18 3 +%22 = OpConstant %18 4 +%23 = OpConstantComposite %20 %21 %22 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%8 = OpImageGather %9 %13 %17 %19 ConstOffset %23 +)", + R"( +)"}; + case ValidTextureOverload::kGather2dArrayF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 0 1 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 3 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 3 +%21 = OpConstant %18 0 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%17 = OpConvertSToF %4 %19 +%20 = OpCompositeConstruct %14 %15 %16 %17 +%8 = OpImageGather %9 %13 %20 %21 +)", + R"( +)"}; + case ValidTextureOverload::kGather2dArrayOffsetF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 0 1 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 3 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 3 +%21 = OpConstant %18 0 +%22 = OpTypeVector %18 2 +%23 = OpConstant %18 4 +%24 = OpConstant %18 5 +%25 = OpConstantComposite %22 %23 %24 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%17 = OpConvertSToF %4 %19 +%20 = OpCompositeConstruct %14 %15 %16 %17 +%8 = OpImageGather %9 %13 %20 %21 ConstOffset %25 +)", + R"( +)"}; + case ValidTextureOverload::kGatherCubeF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 Cube 0 0 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 3 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%17 = OpConstant %4 3 +%18 = OpConstantComposite %14 %15 %16 %17 +%19 = OpTypeInt 32 1 +%20 = OpConstant %19 0 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%8 = OpImageGather %9 %13 %18 %20 +)", + R"( +)"}; + case ValidTextureOverload::kGatherCubeArrayF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 Cube 0 1 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpConstant %4 1 +%15 = OpConstant %4 2 +%16 = OpConstant %4 3 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 4 +%21 = OpConstant %18 0 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%17 = OpConvertSToF %4 %19 +%20 = OpCompositeConstruct %9 %14 %15 %16 %17 +%8 = OpImageGather %9 %13 %20 %21 +)", + R"( +OpCapability SampledCubeArray +)"}; + case ValidTextureOverload::kGatherDepth2dF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 1 0 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 2 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%17 = OpConstantComposite %14 %15 %16 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 0 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%8 = OpImageGather %9 %13 %17 %19 +)", + R"( +)"}; + case ValidTextureOverload::kGatherDepth2dOffsetF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 1 0 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 2 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%17 = OpConstantComposite %14 %15 %16 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 0 +%20 = OpTypeVector %18 2 +%21 = OpConstant %18 3 +%22 = OpConstant %18 4 +%23 = OpConstantComposite %20 %21 %22 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%8 = OpImageGather %9 %13 %17 %19 ConstOffset %23 +)", + R"( +)"}; + case ValidTextureOverload::kGatherDepth2dArrayF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 1 1 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 3 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 3 +%21 = OpConstant %18 0 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%17 = OpConvertSToF %4 %19 +%20 = OpCompositeConstruct %14 %15 %16 %17 +%8 = OpImageGather %9 %13 %20 %21 +)", + R"( +)"}; + case ValidTextureOverload::kGatherDepth2dArrayOffsetF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 1 1 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 3 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 3 +%21 = OpConstant %18 0 +%22 = OpTypeVector %18 2 +%23 = OpConstant %18 4 +%24 = OpConstant %18 5 +%25 = OpConstantComposite %22 %23 %24 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%17 = OpConvertSToF %4 %19 +%20 = OpCompositeConstruct %14 %15 %16 %17 +%8 = OpImageGather %9 %13 %20 %21 ConstOffset %25 +)", + R"( +)"}; + case ValidTextureOverload::kGatherDepthCubeF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 Cube 1 0 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 3 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%17 = OpConstant %4 3 +%18 = OpConstantComposite %14 %15 %16 %17 +%19 = OpTypeInt 32 1 +%20 = OpConstant %19 0 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%8 = OpImageGather %9 %13 %18 %20 +)", + R"( +)"}; + case ValidTextureOverload::kGatherDepthCubeArrayF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 Cube 1 1 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpConstant %4 1 +%15 = OpConstant %4 2 +%16 = OpConstant %4 3 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 4 +%21 = OpConstant %18 0 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%17 = OpConvertSToF %4 %19 +%20 = OpCompositeConstruct %9 %14 %15 %16 %17 +%8 = OpImageGather %9 %13 %20 %21 +)", + R"( +OpCapability SampledCubeArray +)"}; + case ValidTextureOverload::kGatherCompareDepth2dF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 1 0 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 2 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%17 = OpConstantComposite %14 %15 %16 +%18 = OpConstant %4 3 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%8 = OpImageDrefGather %9 %13 %17 %18 +)", + R"( +)"}; + case ValidTextureOverload::kGatherCompareDepth2dOffsetF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 1 0 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 2 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%17 = OpConstantComposite %14 %15 %16 +%18 = OpConstant %4 3 +%20 = OpTypeInt 32 1 +%19 = OpTypeVector %20 2 +%21 = OpConstant %20 4 +%22 = OpConstant %20 5 +%23 = OpConstantComposite %19 %21 %22 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%8 = OpImageDrefGather %9 %13 %17 %18 ConstOffset %23 +)", + R"( +)"}; + case ValidTextureOverload::kGatherCompareDepth2dArrayF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 1 1 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 3 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 3 +%21 = OpConstant %4 4 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%17 = OpConvertSToF %4 %19 +%20 = OpCompositeConstruct %14 %15 %16 %17 +%8 = OpImageDrefGather %9 %13 %20 %21 +)", + R"( +)"}; + case ValidTextureOverload::kGatherCompareDepth2dArrayOffsetF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 2D 1 1 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 3 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 3 +%21 = OpConstant %4 4 +%22 = OpTypeVector %18 2 +%23 = OpConstant %18 5 +%24 = OpConstant %18 6 +%25 = OpConstantComposite %22 %23 %24 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%17 = OpConvertSToF %4 %19 +%20 = OpCompositeConstruct %14 %15 %16 %17 +%8 = OpImageDrefGather %9 %13 %20 %21 ConstOffset %25 +)", + R"( +)"}; + case ValidTextureOverload::kGatherCompareDepthCubeF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 Cube 1 0 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpTypeVector %4 3 +%15 = OpConstant %4 1 +%16 = OpConstant %4 2 +%17 = OpConstant %4 3 +%18 = OpConstantComposite %14 %15 %16 %17 +%19 = OpConstant %4 4 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%8 = OpImageDrefGather %9 %13 %18 %19 +)", + R"( +)"}; + case ValidTextureOverload::kGatherCompareDepthCubeArrayF32: + return {R"( +%4 = OpTypeFloat 32 +%3 = OpTypeImage %4 Cube 1 1 0 1 Unknown +%2 = OpTypePointer UniformConstant %3 +%1 = OpVariable %2 UniformConstant +%7 = OpTypeSampler +%6 = OpTypePointer UniformConstant %7 +%5 = OpVariable %6 UniformConstant +%9 = OpTypeVector %4 4 +%12 = OpTypeSampledImage %3 +%14 = OpConstant %4 1 +%15 = OpConstant %4 2 +%16 = OpConstant %4 3 +%18 = OpTypeInt 32 1 +%19 = OpConstant %18 4 +%21 = OpConstant %4 5 +)", + R"( +%10 = OpLoad %7 %5 +%11 = OpLoad %3 %1 +%13 = OpSampledImage %12 %11 %10 +%17 = OpConvertSToF %4 %19 +%20 = OpCompositeConstruct %9 %14 %15 %16 %17 +%8 = OpImageDrefGather %9 %13 %20 %21 +)", + R"( +OpCapability SampledCubeArray +)"}; case ValidTextureOverload::kNumLayers2dArray: return {R"( %4 = OpTypeFloat 32
diff --git a/test/intrinsics/gen/textureGather/01305f.wgsl b/test/intrinsics/gen/textureGather/01305f.wgsl new file mode 100644 index 0000000..15f035c --- /dev/null +++ b/test/intrinsics/gen/textureGather/01305f.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d_array<u32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d_array<u32>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<u32> +fn textureGather_01305f() { + var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_01305f(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_01305f(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_01305f(); +}
diff --git a/test/intrinsics/gen/textureGather/01305f.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/01305f.wgsl.expected.hlsl new file mode 100644 index 0000000..180ad62 --- /dev/null +++ b/test/intrinsics/gen/textureGather/01305f.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2DArray<uint4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_01305f() { + uint4 res = arg_1.GatherGreen(arg_2, float3(0.0f, 0.0f, float(1))); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_01305f(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_01305f(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_01305f(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/01305f.wgsl.expected.msl b/test/intrinsics/gen/textureGather/01305f.wgsl.expected.msl new file mode 100644 index 0000000..2f68275 --- /dev/null +++ b/test/intrinsics/gen/textureGather/01305f.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_01305f(texture2d_array<uint, access::sample> tint_symbol_1, sampler tint_symbol_2) { + uint4 res = tint_symbol_1.gather(tint_symbol_2, float2(), 1, int2(0), component::y); +} + +float4 vertex_main_inner(texture2d_array<uint, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_01305f(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d_array<uint, access::sample> 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_array<uint, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_01305f(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d_array<uint, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_01305f(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/01305f.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/01305f.wgsl.expected.spvasm new file mode 100644 index 0000000..b8ac4eb --- /dev/null +++ b/test/intrinsics/gen/textureGather/01305f.wgsl.expected.spvasm
@@ -0,0 +1,89 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 49 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_01305f "textureGather_01305f" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %uint = OpTypeInt 32 0 + %11 = OpTypeImage %uint 2D 0 1 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4uint = OpTypeVector %uint 4 + %24 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %34 = OpConstantNull %v4uint + %35 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_01305f = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %34 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %28 = OpConvertSToF %float %int_1 + %31 = OpCompositeConstruct %v3float %float_0 %float_0 %28 + %20 = OpImageGather %v4uint %25 %31 %int_1 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %35 + %37 = OpLabel + %38 = OpFunctionCall %void %textureGather_01305f + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %40 = OpLabel + %41 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %41 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %44 = OpLabel + %45 = OpFunctionCall %void %textureGather_01305f + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %47 = OpLabel + %48 = OpFunctionCall %void %textureGather_01305f + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/01305f.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/01305f.wgsl.expected.wgsl new file mode 100644 index 0000000..da4c38f --- /dev/null +++ b/test/intrinsics/gen/textureGather/01305f.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d_array<u32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_01305f() { + var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_01305f(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_01305f(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_01305f(); +}
diff --git a/test/intrinsics/gen/textureGather/06030a.wgsl b/test/intrinsics/gen/textureGather/06030a.wgsl new file mode 100644 index 0000000..1e42042 --- /dev/null +++ b/test/intrinsics/gen/textureGather/06030a.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d_array<f32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<f32> +fn textureGather_06030a() { + var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_06030a(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_06030a(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_06030a(); +}
diff --git a/test/intrinsics/gen/textureGather/06030a.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/06030a.wgsl.expected.hlsl new file mode 100644 index 0000000..a8ca184 --- /dev/null +++ b/test/intrinsics/gen/textureGather/06030a.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2DArray<float4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_06030a() { + float4 res = arg_1.GatherGreen(arg_2, float3(0.0f, 0.0f, float(1)), int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_06030a(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_06030a(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_06030a(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/06030a.wgsl.expected.msl b/test/intrinsics/gen/textureGather/06030a.wgsl.expected.msl new file mode 100644 index 0000000..247e473 --- /dev/null +++ b/test/intrinsics/gen/textureGather/06030a.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_06030a(texture2d_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), 1, int2(), component::y); +} + +float4 vertex_main_inner(texture2d_array<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_06030a(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d_array<float, access::sample> 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_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_06030a(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d_array<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_06030a(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/06030a.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/06030a.wgsl.expected.spvasm new file mode 100644 index 0000000..a46bcd0 --- /dev/null +++ b/test/intrinsics/gen/textureGather/06030a.wgsl.expected.spvasm
@@ -0,0 +1,88 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 48 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_06030a "textureGather_06030a" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 1 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %14 = OpTypeSampler +%_ptr_UniformConstant_14 = OpTypePointer UniformConstant %14 + %arg_2 = OpVariable %_ptr_UniformConstant_14 UniformConstant + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 + %v2int = OpTypeVector %int 2 + %31 = OpConstantNull %v2int +%_ptr_Function_v4float = OpTypePointer Function %v4float + %34 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_06030a = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_2 + %21 = OpLoad %11 %arg_1 + %23 = OpSampledImage %22 %21 %20 + %26 = OpConvertSToF %float %int_1 + %29 = OpCompositeConstruct %v3float %float_0 %float_0 %26 + %19 = OpImageGather %v4float %23 %29 %int_1 ConstOffset %31 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %34 + %36 = OpLabel + %37 = OpFunctionCall %void %textureGather_06030a + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %39 = OpLabel + %40 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %40 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %43 = OpLabel + %44 = OpFunctionCall %void %textureGather_06030a + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %46 = OpLabel + %47 = OpFunctionCall %void %textureGather_06030a + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/06030a.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/06030a.wgsl.expected.wgsl new file mode 100644 index 0000000..7faad62 --- /dev/null +++ b/test/intrinsics/gen/textureGather/06030a.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d_array<f32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_06030a() { + var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_06030a(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_06030a(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_06030a(); +}
diff --git a/test/intrinsics/gen/textureGather/10c554.wgsl b/test/intrinsics/gen/textureGather/10c554.wgsl new file mode 100644 index 0000000..d64a317 --- /dev/null +++ b/test/intrinsics/gen/textureGather/10c554.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_cube; +[[group(1), binding(1)]] var arg_1: sampler; + +// fn textureGather(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32> +fn textureGather_10c554() { + var res: vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_10c554(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_10c554(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_10c554(); +}
diff --git a/test/intrinsics/gen/textureGather/10c554.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.hlsl new file mode 100644 index 0000000..77c4aab --- /dev/null +++ b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +TextureCube arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +void textureGather_10c554() { + float4 res = arg_0.Gather(arg_1, float3(0.0f, 0.0f, 0.0f)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_10c554(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_10c554(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_10c554(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/10c554.wgsl.expected.msl b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.msl new file mode 100644 index 0000000..076e037 --- /dev/null +++ b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_10c554(depthcube<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float3()); +} + +float4 vertex_main_inner(depthcube<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_10c554(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depthcube<float, access::sample> 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(depthcube<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_10c554(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depthcube<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_10c554(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/10c554.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.spvasm new file mode 100644 index 0000000..dfa4d4a --- /dev/null +++ b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.spvasm
@@ -0,0 +1,84 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 44 +; Schema: 0 + OpCapability Shader + 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 %textureGather_10c554 "textureGather_10c554" + 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 Cube 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %25 = OpConstantNull %v3float + %int = OpTypeInt 32 1 + %int_0 = OpConstant %int 0 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %30 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_10c554 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %19 = OpImageGather %v4float %23 %25 %int_0 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %30 + %32 = OpLabel + %33 = OpFunctionCall %void %textureGather_10c554 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %35 = OpLabel + %36 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %36 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %39 = OpLabel + %40 = OpFunctionCall %void %textureGather_10c554 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %42 = OpLabel + %43 = OpFunctionCall %void %textureGather_10c554 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/10c554.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.wgsl new file mode 100644 index 0000000..748e379 --- /dev/null +++ b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_cube; + +[[group(1), binding(1)]] var arg_1 : sampler; + +fn textureGather_10c554() { + var res : vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_10c554(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_10c554(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_10c554(); +}
diff --git a/test/intrinsics/gen/textureGather/15d79c.wgsl b/test/intrinsics/gen/textureGather/15d79c.wgsl new file mode 100644 index 0000000..55c4e46 --- /dev/null +++ b/test/intrinsics/gen/textureGather/15d79c.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d<f32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32> +fn textureGather_15d79c() { + var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_15d79c(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_15d79c(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_15d79c(); +}
diff --git a/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.hlsl new file mode 100644 index 0000000..b45f71b --- /dev/null +++ b/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2D<float4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_15d79c() { + float4 res = arg_1.GatherGreen(arg_2, float2(0.0f, 0.0f), int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_15d79c(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_15d79c(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_15d79c(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.msl b/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.msl new file mode 100644 index 0000000..5290c91 --- /dev/null +++ b/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_15d79c(texture2d<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(), component::y); +} + +float4 vertex_main_inner(texture2d<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_15d79c(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d<float, access::sample> 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<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_15d79c(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_15d79c(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.spvasm new file mode 100644 index 0000000..3766859 --- /dev/null +++ b/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.spvasm
@@ -0,0 +1,86 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 46 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_15d79c "textureGather_15d79c" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %14 = OpTypeSampler +%_ptr_UniformConstant_14 = OpTypePointer UniformConstant %14 + %arg_2 = OpVariable %_ptr_UniformConstant_14 UniformConstant + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v2float = OpTypeVector %float 2 + %25 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 + %v2int = OpTypeVector %int 2 + %29 = OpConstantNull %v2int +%_ptr_Function_v4float = OpTypePointer Function %v4float + %32 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_15d79c = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_2 + %21 = OpLoad %11 %arg_1 + %23 = OpSampledImage %22 %21 %20 + %19 = OpImageGather %v4float %23 %25 %int_1 ConstOffset %29 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %32 + %34 = OpLabel + %35 = OpFunctionCall %void %textureGather_15d79c + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %37 = OpLabel + %38 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %38 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %41 = OpLabel + %42 = OpFunctionCall %void %textureGather_15d79c + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %44 = OpLabel + %45 = OpFunctionCall %void %textureGather_15d79c + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.wgsl new file mode 100644 index 0000000..5319046 --- /dev/null +++ b/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d<f32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_15d79c() { + var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_15d79c(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_15d79c(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_15d79c(); +}
diff --git a/test/intrinsics/gen/textureGather/2e0ed5.wgsl b/test/intrinsics/gen/textureGather/2e0ed5.wgsl new file mode 100644 index 0000000..c8c1104 --- /dev/null +++ b/test/intrinsics/gen/textureGather/2e0ed5.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_2d; +[[group(1), binding(1)]] var arg_1: sampler; + +// fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> vec4<f32> +fn textureGather_2e0ed5() { + var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_2e0ed5(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_2e0ed5(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_2e0ed5(); +}
diff --git a/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.hlsl new file mode 100644 index 0000000..cba329f --- /dev/null +++ b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2D arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +void textureGather_2e0ed5() { + float4 res = arg_0.Gather(arg_1, float2(0.0f, 0.0f)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_2e0ed5(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_2e0ed5(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_2e0ed5(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.msl b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.msl new file mode 100644 index 0000000..2406342 --- /dev/null +++ b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_2e0ed5(depth2d<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2()); +} + +float4 vertex_main_inner(depth2d<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_2e0ed5(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depth2d<float, access::sample> 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(depth2d<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_2e0ed5(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depth2d<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_2e0ed5(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.spvasm new file mode 100644 index 0000000..8dd47c9 --- /dev/null +++ b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.spvasm
@@ -0,0 +1,84 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 44 +; Schema: 0 + OpCapability Shader + 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 %textureGather_2e0ed5 "textureGather_2e0ed5" + 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 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v2float = OpTypeVector %float 2 + %25 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_0 = OpConstant %int 0 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %30 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_2e0ed5 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %19 = OpImageGather %v4float %23 %25 %int_0 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %30 + %32 = OpLabel + %33 = OpFunctionCall %void %textureGather_2e0ed5 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %35 = OpLabel + %36 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %36 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %39 = OpLabel + %40 = OpFunctionCall %void %textureGather_2e0ed5 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %42 = OpLabel + %43 = OpFunctionCall %void %textureGather_2e0ed5 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.wgsl new file mode 100644 index 0000000..3439a78 --- /dev/null +++ b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_2d; + +[[group(1), binding(1)]] var arg_1 : sampler; + +fn textureGather_2e0ed5() { + var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_2e0ed5(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_2e0ed5(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_2e0ed5(); +}
diff --git a/test/intrinsics/gen/textureGather/3112e8.wgsl b/test/intrinsics/gen/textureGather/3112e8.wgsl new file mode 100644 index 0000000..e556b30 --- /dev/null +++ b/test/intrinsics/gen/textureGather/3112e8.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_cube_array<f32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<f32> +fn textureGather_3112e8() { + var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_3112e8(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_3112e8(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_3112e8(); +}
diff --git a/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.hlsl new file mode 100644 index 0000000..d538b4f --- /dev/null +++ b/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +TextureCubeArray<float4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_3112e8() { + float4 res = arg_1.GatherGreen(arg_2, float4(0.0f, 0.0f, 0.0f, float(1))); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_3112e8(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_3112e8(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_3112e8(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.msl b/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.msl new file mode 100644 index 0000000..e160771 --- /dev/null +++ b/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_3112e8(texturecube_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float3(), 1, component::y); +} + +float4 vertex_main_inner(texturecube_array<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_3112e8(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texturecube_array<float, access::sample> 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(texturecube_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_3112e8(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texturecube_array<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_3112e8(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.spvasm new file mode 100644 index 0000000..267adbc --- /dev/null +++ b/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.spvasm
@@ -0,0 +1,86 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 45 +; Schema: 0 + OpCapability Shader + OpCapability SampledCubeArray + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_3112e8 "textureGather_3112e8" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 Cube 0 1 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %14 = OpTypeSampler +%_ptr_UniformConstant_14 = OpTypePointer UniformConstant %14 + %arg_2 = OpVariable %_ptr_UniformConstant_14 UniformConstant + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %31 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_3112e8 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_2 + %21 = OpLoad %11 %arg_1 + %23 = OpSampledImage %22 %21 %20 + %25 = OpConvertSToF %float %int_1 + %28 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %25 + %19 = OpImageGather %v4float %23 %28 %int_1 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %31 + %33 = OpLabel + %34 = OpFunctionCall %void %textureGather_3112e8 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %36 = OpLabel + %37 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %37 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %40 = OpLabel + %41 = OpFunctionCall %void %textureGather_3112e8 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %43 = OpLabel + %44 = OpFunctionCall %void %textureGather_3112e8 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.wgsl new file mode 100644 index 0000000..5b0bd78 --- /dev/null +++ b/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_cube_array<f32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_3112e8() { + var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_3112e8(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_3112e8(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_3112e8(); +}
diff --git a/test/intrinsics/gen/textureGather/3c527e.wgsl b/test/intrinsics/gen/textureGather/3c527e.wgsl new file mode 100644 index 0000000..1877c38 --- /dev/null +++ b/test/intrinsics/gen/textureGather/3c527e.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_cube_array<u32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_cube_array<u32>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<u32> +fn textureGather_3c527e() { + var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_3c527e(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_3c527e(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_3c527e(); +}
diff --git a/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.hlsl new file mode 100644 index 0000000..9f1913c --- /dev/null +++ b/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +TextureCubeArray<uint4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_3c527e() { + uint4 res = arg_1.GatherGreen(arg_2, float4(0.0f, 0.0f, 0.0f, float(1))); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_3c527e(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_3c527e(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_3c527e(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.msl b/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.msl new file mode 100644 index 0000000..94df233 --- /dev/null +++ b/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_3c527e(texturecube_array<uint, access::sample> tint_symbol_1, sampler tint_symbol_2) { + uint4 res = tint_symbol_1.gather(tint_symbol_2, float3(), 1, component::y); +} + +float4 vertex_main_inner(texturecube_array<uint, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_3c527e(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texturecube_array<uint, access::sample> 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(texturecube_array<uint, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_3c527e(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texturecube_array<uint, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_3c527e(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.spvasm new file mode 100644 index 0000000..4ee0085 --- /dev/null +++ b/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.spvasm
@@ -0,0 +1,89 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 48 +; Schema: 0 + OpCapability Shader + OpCapability SampledCubeArray + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_3c527e "textureGather_3c527e" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %uint = OpTypeInt 32 0 + %11 = OpTypeImage %uint Cube 0 1 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4uint = OpTypeVector %uint 4 + %24 = OpTypeSampledImage %11 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %33 = OpConstantNull %v4uint + %34 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_3c527e = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %33 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %27 = OpConvertSToF %float %int_1 + %30 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %27 + %20 = OpImageGather %v4uint %25 %30 %int_1 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %34 + %36 = OpLabel + %37 = OpFunctionCall %void %textureGather_3c527e + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %39 = OpLabel + %40 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %40 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %43 = OpLabel + %44 = OpFunctionCall %void %textureGather_3c527e + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %46 = OpLabel + %47 = OpFunctionCall %void %textureGather_3c527e + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.wgsl new file mode 100644 index 0000000..4aeb587 --- /dev/null +++ b/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_cube_array<u32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_3c527e() { + var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_3c527e(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_3c527e(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_3c527e(); +}
diff --git a/test/intrinsics/gen/textureGather/43025d.wgsl b/test/intrinsics/gen/textureGather/43025d.wgsl new file mode 100644 index 0000000..219cd0a --- /dev/null +++ b/test/intrinsics/gen/textureGather/43025d.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_cube_array; +[[group(1), binding(1)]] var arg_1: sampler; + +// fn textureGather(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<f32> +fn textureGather_43025d() { + var res: vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_43025d(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_43025d(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_43025d(); +}
diff --git a/test/intrinsics/gen/textureGather/43025d.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.hlsl new file mode 100644 index 0000000..6d752ec --- /dev/null +++ b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +TextureCubeArray arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +void textureGather_43025d() { + float4 res = arg_0.Gather(arg_1, float4(0.0f, 0.0f, 0.0f, float(1))); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_43025d(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_43025d(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_43025d(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/43025d.wgsl.expected.msl b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.msl new file mode 100644 index 0000000..6f16342 --- /dev/null +++ b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_43025d(depthcube_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float3(), 1); +} + +float4 vertex_main_inner(depthcube_array<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_43025d(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depthcube_array<float, access::sample> 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(depthcube_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_43025d(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depthcube_array<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_43025d(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/43025d.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.spvasm new file mode 100644 index 0000000..809074b --- /dev/null +++ b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.spvasm
@@ -0,0 +1,87 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 46 +; Schema: 0 + OpCapability Shader + OpCapability SampledCubeArray + 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 %textureGather_43025d "textureGather_43025d" + 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 Cube 1 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 + %int_0 = OpConstant %int 0 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %32 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_43025d = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %25 = OpConvertSToF %float %int_1 + %28 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %25 + %19 = OpImageGather %v4float %23 %28 %int_0 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %32 + %34 = OpLabel + %35 = OpFunctionCall %void %textureGather_43025d + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %37 = OpLabel + %38 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %38 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %41 = OpLabel + %42 = OpFunctionCall %void %textureGather_43025d + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %44 = OpLabel + %45 = OpFunctionCall %void %textureGather_43025d + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/43025d.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.wgsl new file mode 100644 index 0000000..121a1da --- /dev/null +++ b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array; + +[[group(1), binding(1)]] var arg_1 : sampler; + +fn textureGather_43025d() { + var res : vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_43025d(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_43025d(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_43025d(); +}
diff --git a/test/intrinsics/gen/textureGather/4f2350.wgsl b/test/intrinsics/gen/textureGather/4f2350.wgsl new file mode 100644 index 0000000..296c243 --- /dev/null +++ b/test/intrinsics/gen/textureGather/4f2350.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d_array<i32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d_array<i32>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<i32> +fn textureGather_4f2350() { + var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_4f2350(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_4f2350(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_4f2350(); +}
diff --git a/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.hlsl new file mode 100644 index 0000000..02a56e2 --- /dev/null +++ b/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2DArray<int4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_4f2350() { + int4 res = arg_1.GatherGreen(arg_2, float3(0.0f, 0.0f, float(1)), int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_4f2350(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_4f2350(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_4f2350(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.msl b/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.msl new file mode 100644 index 0000000..767864c --- /dev/null +++ b/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_4f2350(texture2d_array<int, access::sample> tint_symbol_1, sampler tint_symbol_2) { + int4 res = tint_symbol_1.gather(tint_symbol_2, float2(), 1, int2(), component::y); +} + +float4 vertex_main_inner(texture2d_array<int, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_4f2350(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d_array<int, access::sample> 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_array<int, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_4f2350(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d_array<int, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_4f2350(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.spvasm new file mode 100644 index 0000000..c6ff85c --- /dev/null +++ b/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.spvasm
@@ -0,0 +1,90 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 50 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_4f2350 "textureGather_4f2350" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %int = OpTypeInt 32 1 + %11 = OpTypeImage %int 2D 0 1 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4int = OpTypeVector %int 4 + %24 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %float_0 = OpConstant %float 0 + %int_1 = OpConstant %int 1 + %v2int = OpTypeVector %int 2 + %32 = OpConstantNull %v2int +%_ptr_Function_v4int = OpTypePointer Function %v4int + %35 = OpConstantNull %v4int + %36 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_4f2350 = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %35 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %28 = OpConvertSToF %float %int_1 + %30 = OpCompositeConstruct %v3float %float_0 %float_0 %28 + %20 = OpImageGather %v4int %25 %30 %int_1 ConstOffset %32 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %36 + %38 = OpLabel + %39 = OpFunctionCall %void %textureGather_4f2350 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %41 = OpLabel + %42 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %42 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %45 = OpLabel + %46 = OpFunctionCall %void %textureGather_4f2350 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %48 = OpLabel + %49 = OpFunctionCall %void %textureGather_4f2350 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.wgsl new file mode 100644 index 0000000..4dade7f --- /dev/null +++ b/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d_array<i32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_4f2350() { + var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_4f2350(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_4f2350(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_4f2350(); +}
diff --git a/test/intrinsics/gen/textureGather/51cf0b.wgsl b/test/intrinsics/gen/textureGather/51cf0b.wgsl new file mode 100644 index 0000000..349aaa6 --- /dev/null +++ b/test/intrinsics/gen/textureGather/51cf0b.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d_array<i32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d_array<i32>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<i32> +fn textureGather_51cf0b() { + var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_51cf0b(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_51cf0b(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_51cf0b(); +}
diff --git a/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.hlsl new file mode 100644 index 0000000..da88cb1 --- /dev/null +++ b/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2DArray<int4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_51cf0b() { + int4 res = arg_1.GatherGreen(arg_2, float3(0.0f, 0.0f, float(1))); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_51cf0b(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_51cf0b(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_51cf0b(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.msl b/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.msl new file mode 100644 index 0000000..dc883fa --- /dev/null +++ b/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_51cf0b(texture2d_array<int, access::sample> tint_symbol_1, sampler tint_symbol_2) { + int4 res = tint_symbol_1.gather(tint_symbol_2, float2(), 1, int2(0), component::y); +} + +float4 vertex_main_inner(texture2d_array<int, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_51cf0b(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d_array<int, access::sample> 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_array<int, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_51cf0b(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d_array<int, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_51cf0b(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.spvasm new file mode 100644 index 0000000..4bc1440 --- /dev/null +++ b/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.spvasm
@@ -0,0 +1,88 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 48 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_51cf0b "textureGather_51cf0b" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %int = OpTypeInt 32 1 + %11 = OpTypeImage %int 2D 0 1 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4int = OpTypeVector %int 4 + %24 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %float_0 = OpConstant %float 0 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %33 = OpConstantNull %v4int + %34 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_51cf0b = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %33 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %28 = OpConvertSToF %float %int_1 + %30 = OpCompositeConstruct %v3float %float_0 %float_0 %28 + %20 = OpImageGather %v4int %25 %30 %int_1 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %34 + %36 = OpLabel + %37 = OpFunctionCall %void %textureGather_51cf0b + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %39 = OpLabel + %40 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %40 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %43 = OpLabel + %44 = OpFunctionCall %void %textureGather_51cf0b + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %46 = OpLabel + %47 = OpFunctionCall %void %textureGather_51cf0b + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.wgsl new file mode 100644 index 0000000..d14de6e --- /dev/null +++ b/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d_array<i32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_51cf0b() { + var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_51cf0b(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_51cf0b(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_51cf0b(); +}
diff --git a/test/intrinsics/gen/textureGather/53ece6.wgsl b/test/intrinsics/gen/textureGather/53ece6.wgsl new file mode 100644 index 0000000..b218496 --- /dev/null +++ b/test/intrinsics/gen/textureGather/53ece6.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_2d_array; +[[group(1), binding(1)]] var arg_1: sampler; + +// fn textureGather(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<f32> +fn textureGather_53ece6() { + var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_53ece6(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_53ece6(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_53ece6(); +}
diff --git a/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.hlsl new file mode 100644 index 0000000..0962b39 --- /dev/null +++ b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2DArray arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +void textureGather_53ece6() { + float4 res = arg_0.Gather(arg_1, float3(0.0f, 0.0f, float(1)), int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_53ece6(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_53ece6(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_53ece6(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.msl b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.msl new file mode 100644 index 0000000..7da86ab --- /dev/null +++ b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_53ece6(depth2d_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), 1, int2()); +} + +float4 vertex_main_inner(depth2d_array<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_53ece6(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depth2d_array<float, access::sample> 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(depth2d_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_53ece6(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depth2d_array<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_53ece6(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.spvasm new file mode 100644 index 0000000..d46484e --- /dev/null +++ b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.spvasm
@@ -0,0 +1,89 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 49 +; Schema: 0 + OpCapability Shader + 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 %textureGather_53ece6 "textureGather_53ece6" + 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 1 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 + %int_0 = OpConstant %int 0 + %v2int = OpTypeVector %int 2 + %32 = OpConstantNull %v2int +%_ptr_Function_v4float = OpTypePointer Function %v4float + %35 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_53ece6 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %26 = OpConvertSToF %float %int_1 + %29 = OpCompositeConstruct %v3float %float_0 %float_0 %26 + %19 = OpImageGather %v4float %23 %29 %int_0 ConstOffset %32 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %35 + %37 = OpLabel + %38 = OpFunctionCall %void %textureGather_53ece6 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %40 = OpLabel + %41 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %41 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %44 = OpLabel + %45 = OpFunctionCall %void %textureGather_53ece6 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %47 = OpLabel + %48 = OpFunctionCall %void %textureGather_53ece6 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.wgsl new file mode 100644 index 0000000..8cf894a --- /dev/null +++ b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array; + +[[group(1), binding(1)]] var arg_1 : sampler; + +fn textureGather_53ece6() { + var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_53ece6(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_53ece6(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_53ece6(); +}
diff --git a/test/intrinsics/gen/textureGather/57bfc6.wgsl b/test/intrinsics/gen/textureGather/57bfc6.wgsl new file mode 100644 index 0000000..27ab266 --- /dev/null +++ b/test/intrinsics/gen/textureGather/57bfc6.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_cube<f32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> +fn textureGather_57bfc6() { + var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_57bfc6(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_57bfc6(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_57bfc6(); +}
diff --git a/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.hlsl new file mode 100644 index 0000000..eb276f7 --- /dev/null +++ b/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +TextureCube<float4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_57bfc6() { + float4 res = arg_1.GatherGreen(arg_2, float3(0.0f, 0.0f, 0.0f)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_57bfc6(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_57bfc6(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_57bfc6(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.msl b/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.msl new file mode 100644 index 0000000..fb947d4 --- /dev/null +++ b/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_57bfc6(texturecube<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float3(), component::y); +} + +float4 vertex_main_inner(texturecube<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_57bfc6(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texturecube<float, access::sample> 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(texturecube<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_57bfc6(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texturecube<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_57bfc6(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.spvasm new file mode 100644 index 0000000..531f196 --- /dev/null +++ b/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.spvasm
@@ -0,0 +1,84 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 44 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_57bfc6 "textureGather_57bfc6" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 Cube 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %14 = OpTypeSampler +%_ptr_UniformConstant_14 = OpTypePointer UniformConstant %14 + %arg_2 = OpVariable %_ptr_UniformConstant_14 UniformConstant + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %25 = OpConstantNull %v3float + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %30 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_57bfc6 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_2 + %21 = OpLoad %11 %arg_1 + %23 = OpSampledImage %22 %21 %20 + %19 = OpImageGather %v4float %23 %25 %int_1 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %30 + %32 = OpLabel + %33 = OpFunctionCall %void %textureGather_57bfc6 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %35 = OpLabel + %36 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %36 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %39 = OpLabel + %40 = OpFunctionCall %void %textureGather_57bfc6 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %42 = OpLabel + %43 = OpFunctionCall %void %textureGather_57bfc6 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.wgsl new file mode 100644 index 0000000..5be66ca --- /dev/null +++ b/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_cube<f32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_57bfc6() { + var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_57bfc6(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_57bfc6(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_57bfc6(); +}
diff --git a/test/intrinsics/gen/textureGather/587ba3.wgsl b/test/intrinsics/gen/textureGather/587ba3.wgsl new file mode 100644 index 0000000..ac9a292 --- /dev/null +++ b/test/intrinsics/gen/textureGather/587ba3.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d<i32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d<i32>, sampler: sampler, coords: vec2<f32>) -> vec4<i32> +fn textureGather_587ba3() { + var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_587ba3(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_587ba3(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_587ba3(); +}
diff --git a/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.hlsl new file mode 100644 index 0000000..db0fc6f --- /dev/null +++ b/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2D<int4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_587ba3() { + int4 res = arg_1.GatherGreen(arg_2, float2(0.0f, 0.0f)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_587ba3(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_587ba3(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_587ba3(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.msl b/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.msl new file mode 100644 index 0000000..2b32e79 --- /dev/null +++ b/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_587ba3(texture2d<int, access::sample> tint_symbol_1, sampler tint_symbol_2) { + int4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::y); +} + +float4 vertex_main_inner(texture2d<int, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_587ba3(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d<int, access::sample> 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<int, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_587ba3(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d<int, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_587ba3(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.spvasm new file mode 100644 index 0000000..512819d --- /dev/null +++ b/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.spvasm
@@ -0,0 +1,86 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 46 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_587ba3 "textureGather_587ba3" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %int = OpTypeInt 32 1 + %11 = OpTypeImage %int 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4int = OpTypeVector %int 4 + %24 = OpTypeSampledImage %11 + %v2float = OpTypeVector %float 2 + %27 = OpConstantNull %v2float + %int_1 = OpConstant %int 1 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %31 = OpConstantNull %v4int + %32 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_587ba3 = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %31 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %20 = OpImageGather %v4int %25 %27 %int_1 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %32 + %34 = OpLabel + %35 = OpFunctionCall %void %textureGather_587ba3 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %37 = OpLabel + %38 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %38 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %41 = OpLabel + %42 = OpFunctionCall %void %textureGather_587ba3 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %44 = OpLabel + %45 = OpFunctionCall %void %textureGather_587ba3 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.wgsl new file mode 100644 index 0000000..8ef9c1f --- /dev/null +++ b/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d<i32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_587ba3() { + var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_587ba3(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_587ba3(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_587ba3(); +}
diff --git a/test/intrinsics/gen/textureGather/69e0fb.wgsl b/test/intrinsics/gen/textureGather/69e0fb.wgsl new file mode 100644 index 0000000..d8c2376 --- /dev/null +++ b/test/intrinsics/gen/textureGather/69e0fb.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d<i32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d<i32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<i32> +fn textureGather_69e0fb() { + var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_69e0fb(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_69e0fb(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_69e0fb(); +}
diff --git a/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.hlsl new file mode 100644 index 0000000..dcf9228 --- /dev/null +++ b/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2D<int4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_69e0fb() { + int4 res = arg_1.GatherGreen(arg_2, float2(0.0f, 0.0f), int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_69e0fb(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_69e0fb(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_69e0fb(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.msl b/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.msl new file mode 100644 index 0000000..fa09d32 --- /dev/null +++ b/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_69e0fb(texture2d<int, access::sample> tint_symbol_1, sampler tint_symbol_2) { + int4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(), component::y); +} + +float4 vertex_main_inner(texture2d<int, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_69e0fb(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d<int, access::sample> 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<int, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_69e0fb(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d<int, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_69e0fb(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.spvasm new file mode 100644 index 0000000..977638a --- /dev/null +++ b/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.spvasm
@@ -0,0 +1,88 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 48 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_69e0fb "textureGather_69e0fb" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %int = OpTypeInt 32 1 + %11 = OpTypeImage %int 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4int = OpTypeVector %int 4 + %24 = OpTypeSampledImage %11 + %v2float = OpTypeVector %float 2 + %27 = OpConstantNull %v2float + %int_1 = OpConstant %int 1 + %v2int = OpTypeVector %int 2 + %30 = OpConstantNull %v2int +%_ptr_Function_v4int = OpTypePointer Function %v4int + %33 = OpConstantNull %v4int + %34 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_69e0fb = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %33 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %20 = OpImageGather %v4int %25 %27 %int_1 ConstOffset %30 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %34 + %36 = OpLabel + %37 = OpFunctionCall %void %textureGather_69e0fb + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %39 = OpLabel + %40 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %40 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %43 = OpLabel + %44 = OpFunctionCall %void %textureGather_69e0fb + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %46 = OpLabel + %47 = OpFunctionCall %void %textureGather_69e0fb + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.wgsl new file mode 100644 index 0000000..21d5efd --- /dev/null +++ b/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d<i32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_69e0fb() { + var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_69e0fb(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_69e0fb(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_69e0fb(); +}
diff --git a/test/intrinsics/gen/textureGather/93003d.wgsl b/test/intrinsics/gen/textureGather/93003d.wgsl new file mode 100644 index 0000000..fcbedcb --- /dev/null +++ b/test/intrinsics/gen/textureGather/93003d.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d<u32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d<u32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<u32> +fn textureGather_93003d() { + var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_93003d(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_93003d(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_93003d(); +}
diff --git a/test/intrinsics/gen/textureGather/93003d.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/93003d.wgsl.expected.hlsl new file mode 100644 index 0000000..f9162f0 --- /dev/null +++ b/test/intrinsics/gen/textureGather/93003d.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2D<uint4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_93003d() { + uint4 res = arg_1.GatherGreen(arg_2, float2(0.0f, 0.0f), int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_93003d(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_93003d(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_93003d(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/93003d.wgsl.expected.msl b/test/intrinsics/gen/textureGather/93003d.wgsl.expected.msl new file mode 100644 index 0000000..5498485 --- /dev/null +++ b/test/intrinsics/gen/textureGather/93003d.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_93003d(texture2d<uint, access::sample> tint_symbol_1, sampler tint_symbol_2) { + uint4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(), component::y); +} + +float4 vertex_main_inner(texture2d<uint, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_93003d(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d<uint, access::sample> 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<uint, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_93003d(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d<uint, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_93003d(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/93003d.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/93003d.wgsl.expected.spvasm new file mode 100644 index 0000000..e31ea80 --- /dev/null +++ b/test/intrinsics/gen/textureGather/93003d.wgsl.expected.spvasm
@@ -0,0 +1,89 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 49 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_93003d "textureGather_93003d" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %uint = OpTypeInt 32 0 + %11 = OpTypeImage %uint 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4uint = OpTypeVector %uint 4 + %24 = OpTypeSampledImage %11 + %v2float = OpTypeVector %float 2 + %27 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 + %v2int = OpTypeVector %int 2 + %31 = OpConstantNull %v2int +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %34 = OpConstantNull %v4uint + %35 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_93003d = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %34 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %20 = OpImageGather %v4uint %25 %27 %int_1 ConstOffset %31 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %35 + %37 = OpLabel + %38 = OpFunctionCall %void %textureGather_93003d + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %40 = OpLabel + %41 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %41 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %44 = OpLabel + %45 = OpFunctionCall %void %textureGather_93003d + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %47 = OpLabel + %48 = OpFunctionCall %void %textureGather_93003d + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/93003d.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/93003d.wgsl.expected.wgsl new file mode 100644 index 0000000..64c3ad0 --- /dev/null +++ b/test/intrinsics/gen/textureGather/93003d.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d<u32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_93003d() { + var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_93003d(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_93003d(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_93003d(); +}
diff --git a/test/intrinsics/gen/textureGather/9a6358.wgsl b/test/intrinsics/gen/textureGather/9a6358.wgsl new file mode 100644 index 0000000..7b84b02 --- /dev/null +++ b/test/intrinsics/gen/textureGather/9a6358.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_2d_array; +[[group(1), binding(1)]] var arg_1: sampler; + +// fn textureGather(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<f32> +fn textureGather_9a6358() { + var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_9a6358(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_9a6358(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_9a6358(); +}
diff --git a/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.hlsl new file mode 100644 index 0000000..31f64d3 --- /dev/null +++ b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2DArray arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +void textureGather_9a6358() { + float4 res = arg_0.Gather(arg_1, float3(0.0f, 0.0f, float(1))); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_9a6358(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_9a6358(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_9a6358(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.msl b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.msl new file mode 100644 index 0000000..d65de71 --- /dev/null +++ b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_9a6358(depth2d_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), 1); +} + +float4 vertex_main_inner(depth2d_array<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_9a6358(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depth2d_array<float, access::sample> 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(depth2d_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_9a6358(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depth2d_array<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_9a6358(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.spvasm new file mode 100644 index 0000000..f379361 --- /dev/null +++ b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.spvasm
@@ -0,0 +1,87 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 47 +; Schema: 0 + OpCapability Shader + 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 %textureGather_9a6358 "textureGather_9a6358" + 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 1 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 + %int_0 = OpConstant %int 0 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %33 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_9a6358 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %26 = OpConvertSToF %float %int_1 + %29 = OpCompositeConstruct %v3float %float_0 %float_0 %26 + %19 = OpImageGather %v4float %23 %29 %int_0 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %33 + %35 = OpLabel + %36 = OpFunctionCall %void %textureGather_9a6358 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %38 = OpLabel + %39 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %39 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %42 = OpLabel + %43 = OpFunctionCall %void %textureGather_9a6358 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %45 = OpLabel + %46 = OpFunctionCall %void %textureGather_9a6358 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.wgsl new file mode 100644 index 0000000..9721e3a --- /dev/null +++ b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array; + +[[group(1), binding(1)]] var arg_1 : sampler; + +fn textureGather_9a6358() { + var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_9a6358(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_9a6358(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_9a6358(); +}
diff --git a/test/intrinsics/gen/textureGather/9efca2.wgsl b/test/intrinsics/gen/textureGather/9efca2.wgsl new file mode 100644 index 0000000..2008c2e --- /dev/null +++ b/test/intrinsics/gen/textureGather/9efca2.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d_array<f32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<f32> +fn textureGather_9efca2() { + var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_9efca2(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_9efca2(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_9efca2(); +}
diff --git a/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.hlsl new file mode 100644 index 0000000..280024d --- /dev/null +++ b/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2DArray<float4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_9efca2() { + float4 res = arg_1.GatherGreen(arg_2, float3(0.0f, 0.0f, float(1))); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_9efca2(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_9efca2(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_9efca2(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.msl b/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.msl new file mode 100644 index 0000000..a99e1db --- /dev/null +++ b/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_9efca2(texture2d_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), 1, int2(0), component::y); +} + +float4 vertex_main_inner(texture2d_array<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_9efca2(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d_array<float, access::sample> 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_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_9efca2(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d_array<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_9efca2(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.spvasm new file mode 100644 index 0000000..5502638 --- /dev/null +++ b/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.spvasm
@@ -0,0 +1,86 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 46 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_9efca2 "textureGather_9efca2" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 1 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %14 = OpTypeSampler +%_ptr_UniformConstant_14 = OpTypePointer UniformConstant %14 + %arg_2 = OpVariable %_ptr_UniformConstant_14 UniformConstant + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %32 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_9efca2 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_2 + %21 = OpLoad %11 %arg_1 + %23 = OpSampledImage %22 %21 %20 + %26 = OpConvertSToF %float %int_1 + %29 = OpCompositeConstruct %v3float %float_0 %float_0 %26 + %19 = OpImageGather %v4float %23 %29 %int_1 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %32 + %34 = OpLabel + %35 = OpFunctionCall %void %textureGather_9efca2 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %37 = OpLabel + %38 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %38 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %41 = OpLabel + %42 = OpFunctionCall %void %textureGather_9efca2 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %44 = OpLabel + %45 = OpFunctionCall %void %textureGather_9efca2 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.wgsl new file mode 100644 index 0000000..07113dd --- /dev/null +++ b/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d_array<f32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_9efca2() { + var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_9efca2(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_9efca2(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_9efca2(); +}
diff --git a/test/intrinsics/gen/textureGather/bd0b1e.wgsl b/test/intrinsics/gen/textureGather/bd0b1e.wgsl new file mode 100644 index 0000000..9b59824 --- /dev/null +++ b/test/intrinsics/gen/textureGather/bd0b1e.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d<f32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> +fn textureGather_bd0b1e() { + var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_bd0b1e(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_bd0b1e(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_bd0b1e(); +}
diff --git a/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.hlsl new file mode 100644 index 0000000..aca181e --- /dev/null +++ b/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2D<float4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_bd0b1e() { + float4 res = arg_1.GatherGreen(arg_2, float2(0.0f, 0.0f)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_bd0b1e(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_bd0b1e(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_bd0b1e(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.msl b/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.msl new file mode 100644 index 0000000..80efabd --- /dev/null +++ b/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_bd0b1e(texture2d<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::y); +} + +float4 vertex_main_inner(texture2d<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_bd0b1e(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d<float, access::sample> 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<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_bd0b1e(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_bd0b1e(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.spvasm new file mode 100644 index 0000000..aeeccf1 --- /dev/null +++ b/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.spvasm
@@ -0,0 +1,84 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 44 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_bd0b1e "textureGather_bd0b1e" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %14 = OpTypeSampler +%_ptr_UniformConstant_14 = OpTypePointer UniformConstant %14 + %arg_2 = OpVariable %_ptr_UniformConstant_14 UniformConstant + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v2float = OpTypeVector %float 2 + %25 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %30 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_bd0b1e = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_2 + %21 = OpLoad %11 %arg_1 + %23 = OpSampledImage %22 %21 %20 + %19 = OpImageGather %v4float %23 %25 %int_1 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %30 + %32 = OpLabel + %33 = OpFunctionCall %void %textureGather_bd0b1e + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %35 = OpLabel + %36 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %36 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %39 = OpLabel + %40 = OpFunctionCall %void %textureGather_bd0b1e + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %42 = OpLabel + %43 = OpFunctionCall %void %textureGather_bd0b1e + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.wgsl new file mode 100644 index 0000000..6094dd2 --- /dev/null +++ b/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d<f32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_bd0b1e() { + var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_bd0b1e(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_bd0b1e(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_bd0b1e(); +}
diff --git a/test/intrinsics/gen/textureGather/c409ae.wgsl b/test/intrinsics/gen/textureGather/c409ae.wgsl new file mode 100644 index 0000000..95088b0 --- /dev/null +++ b/test/intrinsics/gen/textureGather/c409ae.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_2d; +[[group(1), binding(1)]] var arg_1: sampler; + +// fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32> +fn textureGather_c409ae() { + var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_c409ae(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_c409ae(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_c409ae(); +}
diff --git a/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.hlsl new file mode 100644 index 0000000..3360bac --- /dev/null +++ b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2D arg_0 : register(t0, space1); +SamplerState arg_1 : register(s1, space1); + +void textureGather_c409ae() { + float4 res = arg_0.Gather(arg_1, float2(0.0f, 0.0f), int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_c409ae(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_c409ae(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_c409ae(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.msl b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.msl new file mode 100644 index 0000000..2e63e77 --- /dev/null +++ b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_c409ae(depth2d<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2()); +} + +float4 vertex_main_inner(depth2d<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_c409ae(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depth2d<float, access::sample> 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(depth2d<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_c409ae(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depth2d<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_c409ae(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.spvasm new file mode 100644 index 0000000..3ff9b74 --- /dev/null +++ b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.spvasm
@@ -0,0 +1,86 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 46 +; Schema: 0 + OpCapability Shader + 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 %textureGather_c409ae "textureGather_c409ae" + 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 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v2float = OpTypeVector %float 2 + %25 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_0 = OpConstant %int 0 + %v2int = OpTypeVector %int 2 + %29 = OpConstantNull %v2int +%_ptr_Function_v4float = OpTypePointer Function %v4float + %32 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_c409ae = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %19 = OpImageGather %v4float %23 %25 %int_0 ConstOffset %29 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %32 + %34 = OpLabel + %35 = OpFunctionCall %void %textureGather_c409ae + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %37 = OpLabel + %38 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %38 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %41 = OpLabel + %42 = OpFunctionCall %void %textureGather_c409ae + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %44 = OpLabel + %45 = OpFunctionCall %void %textureGather_c409ae + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.wgsl new file mode 100644 index 0000000..88bc15d --- /dev/null +++ b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_2d; + +[[group(1), binding(1)]] var arg_1 : sampler; + +fn textureGather_c409ae() { + var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_c409ae(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_c409ae(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_c409ae(); +}
diff --git a/test/intrinsics/gen/textureGather/c55822.wgsl b/test/intrinsics/gen/textureGather/c55822.wgsl new file mode 100644 index 0000000..e91568d --- /dev/null +++ b/test/intrinsics/gen/textureGather/c55822.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_cube_array<i32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_cube_array<i32>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<i32> +fn textureGather_c55822() { + var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_c55822(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_c55822(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_c55822(); +}
diff --git a/test/intrinsics/gen/textureGather/c55822.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/c55822.wgsl.expected.hlsl new file mode 100644 index 0000000..e01de9f --- /dev/null +++ b/test/intrinsics/gen/textureGather/c55822.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +TextureCubeArray<int4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_c55822() { + int4 res = arg_1.GatherGreen(arg_2, float4(0.0f, 0.0f, 0.0f, float(1))); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_c55822(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_c55822(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_c55822(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/c55822.wgsl.expected.msl b/test/intrinsics/gen/textureGather/c55822.wgsl.expected.msl new file mode 100644 index 0000000..57ad16e --- /dev/null +++ b/test/intrinsics/gen/textureGather/c55822.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_c55822(texturecube_array<int, access::sample> tint_symbol_1, sampler tint_symbol_2) { + int4 res = tint_symbol_1.gather(tint_symbol_2, float3(), 1, component::y); +} + +float4 vertex_main_inner(texturecube_array<int, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_c55822(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texturecube_array<int, access::sample> 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(texturecube_array<int, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_c55822(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texturecube_array<int, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_c55822(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/c55822.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/c55822.wgsl.expected.spvasm new file mode 100644 index 0000000..3b73a1c --- /dev/null +++ b/test/intrinsics/gen/textureGather/c55822.wgsl.expected.spvasm
@@ -0,0 +1,88 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 47 +; Schema: 0 + OpCapability Shader + OpCapability SampledCubeArray + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_c55822 "textureGather_c55822" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %int = OpTypeInt 32 1 + %11 = OpTypeImage %int Cube 0 1 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4int = OpTypeVector %int 4 + %24 = OpTypeSampledImage %11 + %float_0 = OpConstant %float 0 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %32 = OpConstantNull %v4int + %33 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_c55822 = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %32 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %27 = OpConvertSToF %float %int_1 + %29 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %27 + %20 = OpImageGather %v4int %25 %29 %int_1 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %33 + %35 = OpLabel + %36 = OpFunctionCall %void %textureGather_c55822 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %38 = OpLabel + %39 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %39 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %42 = OpLabel + %43 = OpFunctionCall %void %textureGather_c55822 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %45 = OpLabel + %46 = OpFunctionCall %void %textureGather_c55822 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/c55822.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/c55822.wgsl.expected.wgsl new file mode 100644 index 0000000..58bbb42 --- /dev/null +++ b/test/intrinsics/gen/textureGather/c55822.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_cube_array<i32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_c55822() { + var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_c55822(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_c55822(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_c55822(); +}
diff --git a/test/intrinsics/gen/textureGather/e1b67d.wgsl b/test/intrinsics/gen/textureGather/e1b67d.wgsl new file mode 100644 index 0000000..d243474 --- /dev/null +++ b/test/intrinsics/gen/textureGather/e1b67d.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_cube<u32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_cube<u32>, sampler: sampler, coords: vec3<f32>) -> vec4<u32> +fn textureGather_e1b67d() { + var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_e1b67d(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_e1b67d(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_e1b67d(); +}
diff --git a/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.hlsl new file mode 100644 index 0000000..4d46a7e --- /dev/null +++ b/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +TextureCube<uint4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_e1b67d() { + uint4 res = arg_1.GatherGreen(arg_2, float3(0.0f, 0.0f, 0.0f)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_e1b67d(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_e1b67d(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_e1b67d(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.msl b/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.msl new file mode 100644 index 0000000..6e5fb4b --- /dev/null +++ b/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_e1b67d(texturecube<uint, access::sample> tint_symbol_1, sampler tint_symbol_2) { + uint4 res = tint_symbol_1.gather(tint_symbol_2, float3(), component::y); +} + +float4 vertex_main_inner(texturecube<uint, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_e1b67d(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texturecube<uint, access::sample> 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(texturecube<uint, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_e1b67d(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texturecube<uint, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_e1b67d(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.spvasm new file mode 100644 index 0000000..e7664cb --- /dev/null +++ b/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.spvasm
@@ -0,0 +1,87 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 47 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_e1b67d "textureGather_e1b67d" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %uint = OpTypeInt 32 0 + %11 = OpTypeImage %uint Cube 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4uint = OpTypeVector %uint 4 + %24 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %27 = OpConstantNull %v3float + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %32 = OpConstantNull %v4uint + %33 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_e1b67d = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %32 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %20 = OpImageGather %v4uint %25 %27 %int_1 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %33 + %35 = OpLabel + %36 = OpFunctionCall %void %textureGather_e1b67d + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %38 = OpLabel + %39 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %39 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %42 = OpLabel + %43 = OpFunctionCall %void %textureGather_e1b67d + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %45 = OpLabel + %46 = OpFunctionCall %void %textureGather_e1b67d + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.wgsl new file mode 100644 index 0000000..125d649 --- /dev/null +++ b/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_cube<u32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_e1b67d() { + var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_e1b67d(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_e1b67d(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_e1b67d(); +}
diff --git a/test/intrinsics/gen/textureGather/e9eff6.wgsl b/test/intrinsics/gen/textureGather/e9eff6.wgsl new file mode 100644 index 0000000..02702a4 --- /dev/null +++ b/test/intrinsics/gen/textureGather/e9eff6.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d<u32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d<u32>, sampler: sampler, coords: vec2<f32>) -> vec4<u32> +fn textureGather_e9eff6() { + var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_e9eff6(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_e9eff6(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_e9eff6(); +}
diff --git a/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.hlsl new file mode 100644 index 0000000..46ac6a1 --- /dev/null +++ b/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2D<uint4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_e9eff6() { + uint4 res = arg_1.GatherGreen(arg_2, float2(0.0f, 0.0f)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_e9eff6(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_e9eff6(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_e9eff6(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.msl b/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.msl new file mode 100644 index 0000000..7e09a81 --- /dev/null +++ b/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_e9eff6(texture2d<uint, access::sample> tint_symbol_1, sampler tint_symbol_2) { + uint4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::y); +} + +float4 vertex_main_inner(texture2d<uint, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_e9eff6(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d<uint, access::sample> 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<uint, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_e9eff6(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d<uint, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_e9eff6(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.spvasm new file mode 100644 index 0000000..6219640 --- /dev/null +++ b/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.spvasm
@@ -0,0 +1,87 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 47 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_e9eff6 "textureGather_e9eff6" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %uint = OpTypeInt 32 0 + %11 = OpTypeImage %uint 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4uint = OpTypeVector %uint 4 + %24 = OpTypeSampledImage %11 + %v2float = OpTypeVector %float 2 + %27 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %32 = OpConstantNull %v4uint + %33 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_e9eff6 = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %32 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %20 = OpImageGather %v4uint %25 %27 %int_1 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %33 + %35 = OpLabel + %36 = OpFunctionCall %void %textureGather_e9eff6 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %38 = OpLabel + %39 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %39 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %42 = OpLabel + %43 = OpFunctionCall %void %textureGather_e9eff6 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %45 = OpLabel + %46 = OpFunctionCall %void %textureGather_e9eff6 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.wgsl new file mode 100644 index 0000000..1f11f53 --- /dev/null +++ b/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d<u32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_e9eff6() { + var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_e9eff6(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_e9eff6(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_e9eff6(); +}
diff --git a/test/intrinsics/gen/textureGather/f5f3ba.wgsl b/test/intrinsics/gen/textureGather/f5f3ba.wgsl new file mode 100644 index 0000000..9b998b4 --- /dev/null +++ b/test/intrinsics/gen/textureGather/f5f3ba.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_2d_array<u32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_2d_array<u32>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<u32> +fn textureGather_f5f3ba() { + var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_f5f3ba(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_f5f3ba(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_f5f3ba(); +}
diff --git a/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.hlsl new file mode 100644 index 0000000..f6e6c95 --- /dev/null +++ b/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2DArray<uint4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_f5f3ba() { + uint4 res = arg_1.GatherGreen(arg_2, float3(0.0f, 0.0f, float(1)), int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_f5f3ba(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_f5f3ba(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_f5f3ba(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.msl b/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.msl new file mode 100644 index 0000000..461f0e4 --- /dev/null +++ b/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_f5f3ba(texture2d_array<uint, access::sample> tint_symbol_1, sampler tint_symbol_2) { + uint4 res = tint_symbol_1.gather(tint_symbol_2, float2(), 1, int2(), component::y); +} + +float4 vertex_main_inner(texture2d_array<uint, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_f5f3ba(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texture2d_array<uint, access::sample> 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_array<uint, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_f5f3ba(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texture2d_array<uint, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_f5f3ba(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.spvasm new file mode 100644 index 0000000..893c80a --- /dev/null +++ b/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.spvasm
@@ -0,0 +1,91 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 51 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_f5f3ba "textureGather_f5f3ba" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %uint = OpTypeInt 32 0 + %11 = OpTypeImage %uint 2D 0 1 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4uint = OpTypeVector %uint 4 + %24 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 + %v2int = OpTypeVector %int 2 + %33 = OpConstantNull %v2int +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %36 = OpConstantNull %v4uint + %37 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_f5f3ba = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %36 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %28 = OpConvertSToF %float %int_1 + %31 = OpCompositeConstruct %v3float %float_0 %float_0 %28 + %20 = OpImageGather %v4uint %25 %31 %int_1 ConstOffset %33 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %37 + %39 = OpLabel + %40 = OpFunctionCall %void %textureGather_f5f3ba + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %42 = OpLabel + %43 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %43 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %46 = OpLabel + %47 = OpFunctionCall %void %textureGather_f5f3ba + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %49 = OpLabel + %50 = OpFunctionCall %void %textureGather_f5f3ba + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.wgsl new file mode 100644 index 0000000..0505f50 --- /dev/null +++ b/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_2d_array<u32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_f5f3ba() { + var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_f5f3ba(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_f5f3ba(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_f5f3ba(); +}
diff --git a/test/intrinsics/gen/textureGather/f7995a.wgsl b/test/intrinsics/gen/textureGather/f7995a.wgsl new file mode 100644 index 0000000..b4f7aac --- /dev/null +++ b/test/intrinsics/gen/textureGather/f7995a.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(1)]] var arg_1: texture_cube<i32>; +[[group(1), binding(2)]] var arg_2: sampler; + +// fn textureGather(component: i32, texture: texture_cube<i32>, sampler: sampler, coords: vec3<f32>) -> vec4<i32> +fn textureGather_f7995a() { + var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_f7995a(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_f7995a(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_f7995a(); +}
diff --git a/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.hlsl b/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.hlsl new file mode 100644 index 0000000..6d0ca68 --- /dev/null +++ b/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +TextureCube<int4> arg_1 : register(t1, space1); +SamplerState arg_2 : register(s2, space1); + +void textureGather_f7995a() { + int4 res = arg_1.GatherGreen(arg_2, float3(0.0f, 0.0f, 0.0f)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGather_f7995a(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGather_f7995a(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGather_f7995a(); + return; +}
diff --git a/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.msl b/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.msl new file mode 100644 index 0000000..e154e15 --- /dev/null +++ b/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGather_f7995a(texturecube<int, access::sample> tint_symbol_1, sampler tint_symbol_2) { + int4 res = tint_symbol_1.gather(tint_symbol_2, float3(), component::y); +} + +float4 vertex_main_inner(texturecube<int, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGather_f7995a(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(texturecube<int, access::sample> 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(texturecube<int, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGather_f7995a(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(texturecube<int, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGather_f7995a(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.spvasm b/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.spvasm new file mode 100644 index 0000000..08fb6fc --- /dev/null +++ b/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.spvasm
@@ -0,0 +1,86 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 46 +; Schema: 0 + OpCapability Shader + 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_1 "arg_1" + OpName %arg_2 "arg_2" + OpName %textureGather_f7995a "textureGather_f7995a" + 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_1 DescriptorSet 1 + OpDecorate %arg_1 Binding 1 + OpDecorate %arg_2 DescriptorSet 1 + OpDecorate %arg_2 Binding 2 + %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 + %int = OpTypeInt 32 1 + %11 = OpTypeImage %int Cube 0 0 0 1 Unknown +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %arg_1 = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %arg_2 = OpVariable %_ptr_UniformConstant_15 UniformConstant + %void = OpTypeVoid + %16 = OpTypeFunction %void + %v4int = OpTypeVector %int 4 + %24 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %27 = OpConstantNull %v3float + %int_1 = OpConstant %int 1 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %31 = OpConstantNull %v4int + %32 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%textureGather_f7995a = OpFunction %void None %16 + %19 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %31 + %22 = OpLoad %15 %arg_2 + %23 = OpLoad %11 %arg_1 + %25 = OpSampledImage %24 %23 %22 + %20 = OpImageGather %v4int %25 %27 %int_1 + OpStore %res %20 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %32 + %34 = OpLabel + %35 = OpFunctionCall %void %textureGather_f7995a + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %16 + %37 = OpLabel + %38 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %38 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %16 + %41 = OpLabel + %42 = OpFunctionCall %void %textureGather_f7995a + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %16 + %44 = OpLabel + %45 = OpFunctionCall %void %textureGather_f7995a + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.wgsl new file mode 100644 index 0000000..273f599 --- /dev/null +++ b/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(1)]] var arg_1 : texture_cube<i32>; + +[[group(1), binding(2)]] var arg_2 : sampler; + +fn textureGather_f7995a() { + var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGather_f7995a(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGather_f7995a(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGather_f7995a(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl new file mode 100644 index 0000000..732eb5a --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_cube; +[[group(1), binding(1)]] var arg_1: sampler_comparison; + +// fn textureGatherCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> vec4<f32> +fn textureGatherCompare_182fd4() { + var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1.0); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_182fd4(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_182fd4(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_182fd4(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.hlsl b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.hlsl new file mode 100644 index 0000000..09f24d3 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +TextureCube arg_0 : register(t0, space1); +SamplerComparisonState arg_1 : register(s1, space1); + +void textureGatherCompare_182fd4() { + float4 res = arg_0.GatherCmp(arg_1, float3(0.0f, 0.0f, 0.0f), 1.0f); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGatherCompare_182fd4(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGatherCompare_182fd4(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGatherCompare_182fd4(); + return; +}
diff --git a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.msl b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.msl new file mode 100644 index 0000000..07d9f5c --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGatherCompare_182fd4(depthcube<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather_compare(tint_symbol_2, float3(), 1.0f); +} + +float4 vertex_main_inner(depthcube<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGatherCompare_182fd4(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depthcube<float, access::sample> 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(depthcube<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGatherCompare_182fd4(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depthcube<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGatherCompare_182fd4(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.spvasm b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.spvasm new file mode 100644 index 0000000..6137b2b --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.spvasm
@@ -0,0 +1,82 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 42 +; Schema: 0 + OpCapability Shader + 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 %textureGatherCompare_182fd4 "textureGatherCompare_182fd4" + 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 Cube 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %25 = OpConstantNull %v3float + %float_1 = OpConstant %float 1 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %29 = OpTypeFunction %v4float +%textureGatherCompare_182fd4 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %19 = OpImageDrefGather %v4float %23 %25 %float_1 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %29 + %31 = OpLabel + %32 = OpFunctionCall %void %textureGatherCompare_182fd4 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %34 = OpLabel + %35 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %35 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %37 = OpLabel + %38 = OpFunctionCall %void %textureGatherCompare_182fd4 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %40 = OpLabel + %41 = OpFunctionCall %void %textureGatherCompare_182fd4 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.wgsl new file mode 100644 index 0000000..f04178c --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_cube; + +[[group(1), binding(1)]] var arg_1 : sampler_comparison; + +fn textureGatherCompare_182fd4() { + var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1.0); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_182fd4(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_182fd4(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_182fd4(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl new file mode 100644 index 0000000..fcb9b53 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_cube_array; +[[group(1), binding(1)]] var arg_1: sampler_comparison; + +// fn textureGatherCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> vec4<f32> +fn textureGatherCompare_60d2d1() { + var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1, 1.0); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_60d2d1(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_60d2d1(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_60d2d1(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.hlsl b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.hlsl new file mode 100644 index 0000000..2a7c8fd --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +TextureCubeArray arg_0 : register(t0, space1); +SamplerComparisonState arg_1 : register(s1, space1); + +void textureGatherCompare_60d2d1() { + float4 res = arg_0.GatherCmp(arg_1, float4(0.0f, 0.0f, 0.0f, float(1)), 1.0f); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGatherCompare_60d2d1(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGatherCompare_60d2d1(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGatherCompare_60d2d1(); + return; +}
diff --git a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.msl b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.msl new file mode 100644 index 0000000..e504b00 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGatherCompare_60d2d1(depthcube_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather_compare(tint_symbol_2, float3(), 1, 1.0f); +} + +float4 vertex_main_inner(depthcube_array<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGatherCompare_60d2d1(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depthcube_array<float, access::sample> 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(depthcube_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGatherCompare_60d2d1(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depthcube_array<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGatherCompare_60d2d1(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.spvasm b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.spvasm new file mode 100644 index 0000000..c6fd071 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.spvasm
@@ -0,0 +1,86 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 45 +; Schema: 0 + OpCapability Shader + OpCapability SampledCubeArray + 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 %textureGatherCompare_60d2d1 "textureGatherCompare_60d2d1" + 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 Cube 1 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 + %float_1 = OpConstant %float 1 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %32 = OpTypeFunction %v4float +%textureGatherCompare_60d2d1 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %25 = OpConvertSToF %float %int_1 + %28 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %25 + %19 = OpImageDrefGather %v4float %23 %28 %float_1 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %32 + %34 = OpLabel + %35 = OpFunctionCall %void %textureGatherCompare_60d2d1 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %37 = OpLabel + %38 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %38 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %40 = OpLabel + %41 = OpFunctionCall %void %textureGatherCompare_60d2d1 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %43 = OpLabel + %44 = OpFunctionCall %void %textureGatherCompare_60d2d1 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.wgsl new file mode 100644 index 0000000..005cc8d --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array; + +[[group(1), binding(1)]] var arg_1 : sampler_comparison; + +fn textureGatherCompare_60d2d1() { + var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1, 1.0); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_60d2d1(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_60d2d1(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_60d2d1(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl new file mode 100644 index 0000000..16611ce --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_2d; +[[group(1), binding(1)]] var arg_1: sampler_comparison; + +// fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> vec4<f32> +fn textureGatherCompare_6d9352() { + var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_6d9352(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_6d9352(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_6d9352(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.hlsl b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.hlsl new file mode 100644 index 0000000..4689a02 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2D arg_0 : register(t0, space1); +SamplerComparisonState arg_1 : register(s1, space1); + +void textureGatherCompare_6d9352() { + float4 res = arg_0.GatherCmp(arg_1, float2(0.0f, 0.0f), 1.0f); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGatherCompare_6d9352(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGatherCompare_6d9352(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGatherCompare_6d9352(); + return; +}
diff --git a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.msl b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.msl new file mode 100644 index 0000000..8bcdc2d --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGatherCompare_6d9352(depth2d<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather_compare(tint_symbol_2, float2(), 1.0f); +} + +float4 vertex_main_inner(depth2d<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGatherCompare_6d9352(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depth2d<float, access::sample> 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(depth2d<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGatherCompare_6d9352(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depth2d<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGatherCompare_6d9352(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.spvasm b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.spvasm new file mode 100644 index 0000000..5a86729 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.spvasm
@@ -0,0 +1,82 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 42 +; Schema: 0 + OpCapability Shader + 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 %textureGatherCompare_6d9352 "textureGatherCompare_6d9352" + 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 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v2float = OpTypeVector %float 2 + %25 = OpConstantNull %v2float + %float_1 = OpConstant %float 1 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %29 = OpTypeFunction %v4float +%textureGatherCompare_6d9352 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %19 = OpImageDrefGather %v4float %23 %25 %float_1 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %29 + %31 = OpLabel + %32 = OpFunctionCall %void %textureGatherCompare_6d9352 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %34 = OpLabel + %35 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %35 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %37 = OpLabel + %38 = OpFunctionCall %void %textureGatherCompare_6d9352 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %40 = OpLabel + %41 = OpFunctionCall %void %textureGatherCompare_6d9352 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.wgsl new file mode 100644 index 0000000..de6fa2c --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_2d; + +[[group(1), binding(1)]] var arg_1 : sampler_comparison; + +fn textureGatherCompare_6d9352() { + var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_6d9352(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_6d9352(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_6d9352(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl new file mode 100644 index 0000000..b2eb4b7 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_2d_array; +[[group(1), binding(1)]] var arg_1: sampler_comparison; + +// fn textureGatherCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> vec4<f32> +fn textureGatherCompare_6f1267() { + var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_6f1267(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_6f1267(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_6f1267(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.hlsl b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.hlsl new file mode 100644 index 0000000..f1bcdbe --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2DArray arg_0 : register(t0, space1); +SamplerComparisonState arg_1 : register(s1, space1); + +void textureGatherCompare_6f1267() { + float4 res = arg_0.GatherCmp(arg_1, float3(0.0f, 0.0f, float(1)), 1.0f, int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGatherCompare_6f1267(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGatherCompare_6f1267(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGatherCompare_6f1267(); + return; +}
diff --git a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.msl b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.msl new file mode 100644 index 0000000..f5fcff2 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGatherCompare_6f1267(depth2d_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather_compare(tint_symbol_2, float2(), 1, 1.0f, int2()); +} + +float4 vertex_main_inner(depth2d_array<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGatherCompare_6f1267(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depth2d_array<float, access::sample> 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(depth2d_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGatherCompare_6f1267(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depth2d_array<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGatherCompare_6f1267(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.spvasm b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.spvasm new file mode 100644 index 0000000..33dbf28 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.spvasm
@@ -0,0 +1,88 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 48 +; Schema: 0 + OpCapability Shader + 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 %textureGatherCompare_6f1267 "textureGatherCompare_6f1267" + 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 1 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 + %float_1 = OpConstant %float 1 + %v2int = OpTypeVector %int 2 + %32 = OpConstantNull %v2int +%_ptr_Function_v4float = OpTypePointer Function %v4float + %35 = OpTypeFunction %v4float +%textureGatherCompare_6f1267 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %26 = OpConvertSToF %float %int_1 + %29 = OpCompositeConstruct %v3float %float_0 %float_0 %26 + %19 = OpImageDrefGather %v4float %23 %29 %float_1 ConstOffset %32 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %35 + %37 = OpLabel + %38 = OpFunctionCall %void %textureGatherCompare_6f1267 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %40 = OpLabel + %41 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %41 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %43 = OpLabel + %44 = OpFunctionCall %void %textureGatherCompare_6f1267 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %46 = OpLabel + %47 = OpFunctionCall %void %textureGatherCompare_6f1267 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.wgsl new file mode 100644 index 0000000..096891c --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array; + +[[group(1), binding(1)]] var arg_1 : sampler_comparison; + +fn textureGatherCompare_6f1267() { + var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_6f1267(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_6f1267(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_6f1267(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl new file mode 100644 index 0000000..f10cee1 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_2d_array; +[[group(1), binding(1)]] var arg_1: sampler_comparison; + +// fn textureGatherCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> vec4<f32> +fn textureGatherCompare_783e65() { + var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_783e65(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_783e65(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_783e65(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.hlsl b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.hlsl new file mode 100644 index 0000000..025a0e6 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2DArray arg_0 : register(t0, space1); +SamplerComparisonState arg_1 : register(s1, space1); + +void textureGatherCompare_783e65() { + float4 res = arg_0.GatherCmp(arg_1, float3(0.0f, 0.0f, float(1)), 1.0f); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGatherCompare_783e65(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGatherCompare_783e65(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGatherCompare_783e65(); + return; +}
diff --git a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.msl b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.msl new file mode 100644 index 0000000..86197e6 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGatherCompare_783e65(depth2d_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather_compare(tint_symbol_2, float2(), 1, 1.0f); +} + +float4 vertex_main_inner(depth2d_array<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGatherCompare_783e65(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depth2d_array<float, access::sample> 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(depth2d_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGatherCompare_783e65(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depth2d_array<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGatherCompare_783e65(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.spvasm b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.spvasm new file mode 100644 index 0000000..4872ee5 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.spvasm
@@ -0,0 +1,86 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 46 +; Schema: 0 + OpCapability Shader + 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 %textureGatherCompare_783e65 "textureGatherCompare_783e65" + 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 1 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v3float = OpTypeVector %float 3 + %float_0 = OpConstant %float 0 + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 + %float_1 = OpConstant %float 1 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %33 = OpTypeFunction %v4float +%textureGatherCompare_783e65 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %26 = OpConvertSToF %float %int_1 + %29 = OpCompositeConstruct %v3float %float_0 %float_0 %26 + %19 = OpImageDrefGather %v4float %23 %29 %float_1 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %33 + %35 = OpLabel + %36 = OpFunctionCall %void %textureGatherCompare_783e65 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %38 = OpLabel + %39 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %39 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %41 = OpLabel + %42 = OpFunctionCall %void %textureGatherCompare_783e65 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %44 = OpLabel + %45 = OpFunctionCall %void %textureGatherCompare_783e65 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.wgsl new file mode 100644 index 0000000..0ee58ce --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array; + +[[group(1), binding(1)]] var arg_1 : sampler_comparison; + +fn textureGatherCompare_783e65() { + var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_783e65(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_783e65(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_783e65(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl new file mode 100644 index 0000000..803c4f1 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl
@@ -0,0 +1,47 @@ +// Copyright 2021 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/intrinsic-gen +// using the template: +// test/intrinsics/intrinsics.wgsl.tmpl +// and the intrinsic defintion file: +// src/intrinsics.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + +[[group(1), binding(0)]] var arg_0: texture_depth_2d; +[[group(1), binding(1)]] var arg_1: sampler_comparison; + +// fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> vec4<f32> +fn textureGatherCompare_a5f587() { + var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_a5f587(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_a5f587(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_a5f587(); +}
diff --git a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.hlsl b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.hlsl new file mode 100644 index 0000000..e074554 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.hlsl
@@ -0,0 +1,33 @@ +Texture2D arg_0 : register(t0, space1); +SamplerComparisonState arg_1 : register(s1, space1); + +void textureGatherCompare_a5f587() { + float4 res = arg_0.GatherCmp(arg_1, float2(0.0f, 0.0f), 1.0f, int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + textureGatherCompare_a5f587(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + textureGatherCompare_a5f587(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + textureGatherCompare_a5f587(); + return; +}
diff --git a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.msl b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.msl new file mode 100644 index 0000000..2c0176b --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.msl
@@ -0,0 +1,33 @@ +#include <metal_stdlib> + +using namespace metal; +struct tint_symbol { + float4 value [[position]]; +}; + +void textureGatherCompare_a5f587(depth2d<float, access::sample> tint_symbol_1, sampler tint_symbol_2) { + float4 res = tint_symbol_1.gather_compare(tint_symbol_2, float2(), 1.0f, int2()); +} + +float4 vertex_main_inner(depth2d<float, access::sample> tint_symbol_3, sampler tint_symbol_4) { + textureGatherCompare_a5f587(tint_symbol_3, tint_symbol_4); + return float4(); +} + +vertex tint_symbol vertex_main(depth2d<float, access::sample> 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(depth2d<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) { + textureGatherCompare_a5f587(tint_symbol_7, tint_symbol_8); + return; +} + +kernel void compute_main(depth2d<float, access::sample> tint_symbol_9 [[texture(0)]], sampler tint_symbol_10 [[sampler(0)]]) { + textureGatherCompare_a5f587(tint_symbol_9, tint_symbol_10); + return; +} +
diff --git a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.spvasm b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.spvasm new file mode 100644 index 0000000..2d6e7f2 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.spvasm
@@ -0,0 +1,85 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 45 +; Schema: 0 + OpCapability Shader + 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 %textureGatherCompare_a5f587 "textureGatherCompare_a5f587" + 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 1 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 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %22 = OpTypeSampledImage %11 + %v2float = OpTypeVector %float 2 + %25 = OpConstantNull %v2float + %float_1 = OpConstant %float 1 + %int = OpTypeInt 32 1 + %v2int = OpTypeVector %int 2 + %29 = OpConstantNull %v2int +%_ptr_Function_v4float = OpTypePointer Function %v4float + %32 = OpTypeFunction %v4float +%textureGatherCompare_a5f587 = OpFunction %void None %15 + %18 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + %20 = OpLoad %14 %arg_1 + %21 = OpLoad %11 %arg_0 + %23 = OpSampledImage %22 %21 %20 + %19 = OpImageDrefGather %v4float %23 %25 %float_1 ConstOffset %29 + OpStore %res %19 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %32 + %34 = OpLabel + %35 = OpFunctionCall %void %textureGatherCompare_a5f587 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %15 + %37 = OpLabel + %38 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %38 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %15 + %40 = OpLabel + %41 = OpFunctionCall %void %textureGatherCompare_a5f587 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %15 + %43 = OpLabel + %44 = OpFunctionCall %void %textureGatherCompare_a5f587 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.wgsl new file mode 100644 index 0000000..9590326 --- /dev/null +++ b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +[[group(1), binding(0)]] var arg_0 : texture_depth_2d; + +[[group(1), binding(1)]] var arg_1 : sampler_comparison; + +fn textureGatherCompare_a5f587() { + var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>()); +} + +[[stage(vertex)]] +fn vertex_main() -> [[builtin(position)]] vec4<f32> { + textureGatherCompare_a5f587(); + return vec4<f32>(); +} + +[[stage(fragment)]] +fn fragment_main() { + textureGatherCompare_a5f587(); +} + +[[stage(compute), workgroup_size(1)]] +fn compute_main() { + textureGatherCompare_a5f587(); +}
diff --git a/test/intrinsics/textureGather/f32/alpha.wgsl b/test/intrinsics/textureGather/f32/alpha.wgsl new file mode 100644 index 0000000..d61f99b --- /dev/null +++ b/test/intrinsics/textureGather/f32/alpha.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<f32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<f32> = textureGather(3, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/f32/alpha.wgsl.expected.hlsl b/test/intrinsics/textureGather/f32/alpha.wgsl.expected.hlsl new file mode 100644 index 0000000..7f8232f --- /dev/null +++ b/test/intrinsics/textureGather/f32/alpha.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<float4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + float4 res = t.GatherAlpha(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/f32/alpha.wgsl.expected.msl b/test/intrinsics/textureGather/f32/alpha.wgsl.expected.msl new file mode 100644 index 0000000..1f71e85 --- /dev/null +++ b/test/intrinsics/textureGather/f32/alpha.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<float, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::w); + return; +} +
diff --git a/test/intrinsics/textureGather/f32/alpha.wgsl.expected.spvasm b/test/intrinsics/textureGather/f32/alpha.wgsl.expected.spvasm new file mode 100644 index 0000000..7f84ace --- /dev/null +++ b/test/intrinsics/textureGather/f32/alpha.wgsl.expected.spvasm
@@ -0,0 +1,44 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 25 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %float = OpTypeFloat 32 + %3 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4float = OpTypeVector %float 4 + %16 = OpTypeSampledImage %3 + %v2float = OpTypeVector %float 2 + %19 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_3 = OpConstant %int 3 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %24 = OpConstantNull %v4float + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %24 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4float %17 %19 %int_3 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/f32/alpha.wgsl.expected.wgsl b/test/intrinsics/textureGather/f32/alpha.wgsl.expected.wgsl new file mode 100644 index 0000000..fada6d1 --- /dev/null +++ b/test/intrinsics/textureGather/f32/alpha.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<f32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<f32> = textureGather(3, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/f32/blue.wgsl b/test/intrinsics/textureGather/f32/blue.wgsl new file mode 100644 index 0000000..b8251ee --- /dev/null +++ b/test/intrinsics/textureGather/f32/blue.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<f32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<f32> = textureGather(2, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/f32/blue.wgsl.expected.hlsl b/test/intrinsics/textureGather/f32/blue.wgsl.expected.hlsl new file mode 100644 index 0000000..696a8f0 --- /dev/null +++ b/test/intrinsics/textureGather/f32/blue.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<float4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + float4 res = t.GatherBlue(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/f32/blue.wgsl.expected.msl b/test/intrinsics/textureGather/f32/blue.wgsl.expected.msl new file mode 100644 index 0000000..588e727 --- /dev/null +++ b/test/intrinsics/textureGather/f32/blue.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<float, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::z); + return; +} +
diff --git a/test/intrinsics/textureGather/f32/blue.wgsl.expected.spvasm b/test/intrinsics/textureGather/f32/blue.wgsl.expected.spvasm new file mode 100644 index 0000000..56f2dcb --- /dev/null +++ b/test/intrinsics/textureGather/f32/blue.wgsl.expected.spvasm
@@ -0,0 +1,44 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 25 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %float = OpTypeFloat 32 + %3 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4float = OpTypeVector %float 4 + %16 = OpTypeSampledImage %3 + %v2float = OpTypeVector %float 2 + %19 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_2 = OpConstant %int 2 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %24 = OpConstantNull %v4float + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %24 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4float %17 %19 %int_2 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/f32/blue.wgsl.expected.wgsl b/test/intrinsics/textureGather/f32/blue.wgsl.expected.wgsl new file mode 100644 index 0000000..18cc654 --- /dev/null +++ b/test/intrinsics/textureGather/f32/blue.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<f32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<f32> = textureGather(2, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/f32/green.wgsl b/test/intrinsics/textureGather/f32/green.wgsl new file mode 100644 index 0000000..f0960ce --- /dev/null +++ b/test/intrinsics/textureGather/f32/green.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<f32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<f32> = textureGather(1, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/f32/green.wgsl.expected.hlsl b/test/intrinsics/textureGather/f32/green.wgsl.expected.hlsl new file mode 100644 index 0000000..ca621d7 --- /dev/null +++ b/test/intrinsics/textureGather/f32/green.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<float4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + float4 res = t.GatherGreen(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/f32/green.wgsl.expected.msl b/test/intrinsics/textureGather/f32/green.wgsl.expected.msl new file mode 100644 index 0000000..c672905 --- /dev/null +++ b/test/intrinsics/textureGather/f32/green.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<float, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::y); + return; +} +
diff --git a/test/intrinsics/textureGather/f32/green.wgsl.expected.spvasm b/test/intrinsics/textureGather/f32/green.wgsl.expected.spvasm new file mode 100644 index 0000000..c6fef6b --- /dev/null +++ b/test/intrinsics/textureGather/f32/green.wgsl.expected.spvasm
@@ -0,0 +1,44 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 25 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %float = OpTypeFloat 32 + %3 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4float = OpTypeVector %float 4 + %16 = OpTypeSampledImage %3 + %v2float = OpTypeVector %float 2 + %19 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %24 = OpConstantNull %v4float + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %24 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4float %17 %19 %int_1 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/f32/green.wgsl.expected.wgsl b/test/intrinsics/textureGather/f32/green.wgsl.expected.wgsl new file mode 100644 index 0000000..778bc1c --- /dev/null +++ b/test/intrinsics/textureGather/f32/green.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<f32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<f32> = textureGather(1, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/f32/red.wgsl b/test/intrinsics/textureGather/f32/red.wgsl new file mode 100644 index 0000000..89772c9 --- /dev/null +++ b/test/intrinsics/textureGather/f32/red.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<f32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<f32> = textureGather(0, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/f32/red.wgsl.expected.hlsl b/test/intrinsics/textureGather/f32/red.wgsl.expected.hlsl new file mode 100644 index 0000000..c84ae29 --- /dev/null +++ b/test/intrinsics/textureGather/f32/red.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<float4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + float4 res = t.GatherRed(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/f32/red.wgsl.expected.msl b/test/intrinsics/textureGather/f32/red.wgsl.expected.msl new file mode 100644 index 0000000..78a9e9c --- /dev/null +++ b/test/intrinsics/textureGather/f32/red.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<float, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + float4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::x); + return; +} +
diff --git a/test/intrinsics/textureGather/f32/red.wgsl.expected.spvasm b/test/intrinsics/textureGather/f32/red.wgsl.expected.spvasm new file mode 100644 index 0000000..6baa49c --- /dev/null +++ b/test/intrinsics/textureGather/f32/red.wgsl.expected.spvasm
@@ -0,0 +1,44 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 25 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %float = OpTypeFloat 32 + %3 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4float = OpTypeVector %float 4 + %16 = OpTypeSampledImage %3 + %v2float = OpTypeVector %float 2 + %19 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_0 = OpConstant %int 0 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %24 = OpConstantNull %v4float + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %24 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4float %17 %19 %int_0 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/f32/red.wgsl.expected.wgsl b/test/intrinsics/textureGather/f32/red.wgsl.expected.wgsl new file mode 100644 index 0000000..4853506 --- /dev/null +++ b/test/intrinsics/textureGather/f32/red.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<f32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<f32> = textureGather(0, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/i32/alpha.wgsl b/test/intrinsics/textureGather/i32/alpha.wgsl new file mode 100644 index 0000000..d83c3ca --- /dev/null +++ b/test/intrinsics/textureGather/i32/alpha.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<i32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<i32> = textureGather(3, t, s, vec2<f32>()); +} +
diff --git a/test/intrinsics/textureGather/i32/alpha.wgsl.expected.hlsl b/test/intrinsics/textureGather/i32/alpha.wgsl.expected.hlsl new file mode 100644 index 0000000..80023eb --- /dev/null +++ b/test/intrinsics/textureGather/i32/alpha.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<int4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + int4 res = t.GatherAlpha(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/i32/alpha.wgsl.expected.msl b/test/intrinsics/textureGather/i32/alpha.wgsl.expected.msl new file mode 100644 index 0000000..49861cf --- /dev/null +++ b/test/intrinsics/textureGather/i32/alpha.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<int, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + int4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::w); + return; +} +
diff --git a/test/intrinsics/textureGather/i32/alpha.wgsl.expected.spvasm b/test/intrinsics/textureGather/i32/alpha.wgsl.expected.spvasm new file mode 100644 index 0000000..c6e55e1 --- /dev/null +++ b/test/intrinsics/textureGather/i32/alpha.wgsl.expected.spvasm
@@ -0,0 +1,44 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 25 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %int = OpTypeInt 32 1 + %3 = OpTypeImage %int 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4int = OpTypeVector %int 4 + %16 = OpTypeSampledImage %3 + %float = OpTypeFloat 32 + %v2float = OpTypeVector %float 2 + %20 = OpConstantNull %v2float + %int_3 = OpConstant %int 3 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %24 = OpConstantNull %v4int + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %24 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4int %17 %20 %int_3 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/i32/alpha.wgsl.expected.wgsl b/test/intrinsics/textureGather/i32/alpha.wgsl.expected.wgsl new file mode 100644 index 0000000..206d816 --- /dev/null +++ b/test/intrinsics/textureGather/i32/alpha.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<i32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<i32> = textureGather(3, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/i32/blue.wgsl b/test/intrinsics/textureGather/i32/blue.wgsl new file mode 100644 index 0000000..13275af --- /dev/null +++ b/test/intrinsics/textureGather/i32/blue.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<i32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<i32> = textureGather(2, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/i32/blue.wgsl.expected.hlsl b/test/intrinsics/textureGather/i32/blue.wgsl.expected.hlsl new file mode 100644 index 0000000..2292741 --- /dev/null +++ b/test/intrinsics/textureGather/i32/blue.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<int4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + int4 res = t.GatherBlue(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/i32/blue.wgsl.expected.msl b/test/intrinsics/textureGather/i32/blue.wgsl.expected.msl new file mode 100644 index 0000000..f00ee18 --- /dev/null +++ b/test/intrinsics/textureGather/i32/blue.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<int, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + int4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::z); + return; +} +
diff --git a/test/intrinsics/textureGather/i32/blue.wgsl.expected.spvasm b/test/intrinsics/textureGather/i32/blue.wgsl.expected.spvasm new file mode 100644 index 0000000..adcdd42 --- /dev/null +++ b/test/intrinsics/textureGather/i32/blue.wgsl.expected.spvasm
@@ -0,0 +1,44 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 25 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %int = OpTypeInt 32 1 + %3 = OpTypeImage %int 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4int = OpTypeVector %int 4 + %16 = OpTypeSampledImage %3 + %float = OpTypeFloat 32 + %v2float = OpTypeVector %float 2 + %20 = OpConstantNull %v2float + %int_2 = OpConstant %int 2 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %24 = OpConstantNull %v4int + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %24 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4int %17 %20 %int_2 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/i32/blue.wgsl.expected.wgsl b/test/intrinsics/textureGather/i32/blue.wgsl.expected.wgsl new file mode 100644 index 0000000..af7f095 --- /dev/null +++ b/test/intrinsics/textureGather/i32/blue.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<i32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<i32> = textureGather(2, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/i32/green.wgsl b/test/intrinsics/textureGather/i32/green.wgsl new file mode 100644 index 0000000..ecf2d65 --- /dev/null +++ b/test/intrinsics/textureGather/i32/green.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<i32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<i32> = textureGather(1, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/i32/green.wgsl.expected.hlsl b/test/intrinsics/textureGather/i32/green.wgsl.expected.hlsl new file mode 100644 index 0000000..e267c2e --- /dev/null +++ b/test/intrinsics/textureGather/i32/green.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<int4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + int4 res = t.GatherGreen(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/i32/green.wgsl.expected.msl b/test/intrinsics/textureGather/i32/green.wgsl.expected.msl new file mode 100644 index 0000000..277e4e1 --- /dev/null +++ b/test/intrinsics/textureGather/i32/green.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<int, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + int4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::y); + return; +} +
diff --git a/test/intrinsics/textureGather/i32/green.wgsl.expected.spvasm b/test/intrinsics/textureGather/i32/green.wgsl.expected.spvasm new file mode 100644 index 0000000..5d0ecbc --- /dev/null +++ b/test/intrinsics/textureGather/i32/green.wgsl.expected.spvasm
@@ -0,0 +1,44 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 25 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %int = OpTypeInt 32 1 + %3 = OpTypeImage %int 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4int = OpTypeVector %int 4 + %16 = OpTypeSampledImage %3 + %float = OpTypeFloat 32 + %v2float = OpTypeVector %float 2 + %20 = OpConstantNull %v2float + %int_1 = OpConstant %int 1 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %24 = OpConstantNull %v4int + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %24 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4int %17 %20 %int_1 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/i32/green.wgsl.expected.wgsl b/test/intrinsics/textureGather/i32/green.wgsl.expected.wgsl new file mode 100644 index 0000000..862c644 --- /dev/null +++ b/test/intrinsics/textureGather/i32/green.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<i32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<i32> = textureGather(1, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/i32/red.wgsl b/test/intrinsics/textureGather/i32/red.wgsl new file mode 100644 index 0000000..1516eea --- /dev/null +++ b/test/intrinsics/textureGather/i32/red.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<i32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<i32> = textureGather(0, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/i32/red.wgsl.expected.hlsl b/test/intrinsics/textureGather/i32/red.wgsl.expected.hlsl new file mode 100644 index 0000000..f34d0d1 --- /dev/null +++ b/test/intrinsics/textureGather/i32/red.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<int4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + int4 res = t.GatherRed(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/i32/red.wgsl.expected.msl b/test/intrinsics/textureGather/i32/red.wgsl.expected.msl new file mode 100644 index 0000000..1fe688c --- /dev/null +++ b/test/intrinsics/textureGather/i32/red.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<int, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + int4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::x); + return; +} +
diff --git a/test/intrinsics/textureGather/i32/red.wgsl.expected.spvasm b/test/intrinsics/textureGather/i32/red.wgsl.expected.spvasm new file mode 100644 index 0000000..2a619fa --- /dev/null +++ b/test/intrinsics/textureGather/i32/red.wgsl.expected.spvasm
@@ -0,0 +1,44 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 25 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %int = OpTypeInt 32 1 + %3 = OpTypeImage %int 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4int = OpTypeVector %int 4 + %16 = OpTypeSampledImage %3 + %float = OpTypeFloat 32 + %v2float = OpTypeVector %float 2 + %20 = OpConstantNull %v2float + %int_0 = OpConstant %int 0 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %24 = OpConstantNull %v4int + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %24 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4int %17 %20 %int_0 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/i32/red.wgsl.expected.wgsl b/test/intrinsics/textureGather/i32/red.wgsl.expected.wgsl new file mode 100644 index 0000000..7a505f6 --- /dev/null +++ b/test/intrinsics/textureGather/i32/red.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<i32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<i32> = textureGather(0, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/u32/alpha.wgsl b/test/intrinsics/textureGather/u32/alpha.wgsl new file mode 100644 index 0000000..9aeef80 --- /dev/null +++ b/test/intrinsics/textureGather/u32/alpha.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<u32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<u32> = textureGather(3, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/u32/alpha.wgsl.expected.hlsl b/test/intrinsics/textureGather/u32/alpha.wgsl.expected.hlsl new file mode 100644 index 0000000..78147c9 --- /dev/null +++ b/test/intrinsics/textureGather/u32/alpha.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<uint4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + uint4 res = t.GatherAlpha(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/u32/alpha.wgsl.expected.msl b/test/intrinsics/textureGather/u32/alpha.wgsl.expected.msl new file mode 100644 index 0000000..fc990a5 --- /dev/null +++ b/test/intrinsics/textureGather/u32/alpha.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<uint, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + uint4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::w); + return; +} +
diff --git a/test/intrinsics/textureGather/u32/alpha.wgsl.expected.spvasm b/test/intrinsics/textureGather/u32/alpha.wgsl.expected.spvasm new file mode 100644 index 0000000..aa69dd0 --- /dev/null +++ b/test/intrinsics/textureGather/u32/alpha.wgsl.expected.spvasm
@@ -0,0 +1,45 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 26 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %uint = OpTypeInt 32 0 + %3 = OpTypeImage %uint 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4uint = OpTypeVector %uint 4 + %16 = OpTypeSampledImage %3 + %float = OpTypeFloat 32 + %v2float = OpTypeVector %float 2 + %20 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_3 = OpConstant %int 3 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %25 = OpConstantNull %v4uint + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %25 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4uint %17 %20 %int_3 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/u32/alpha.wgsl.expected.wgsl b/test/intrinsics/textureGather/u32/alpha.wgsl.expected.wgsl new file mode 100644 index 0000000..fc21f33 --- /dev/null +++ b/test/intrinsics/textureGather/u32/alpha.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<u32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<u32> = textureGather(3, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/u32/blue.wgsl b/test/intrinsics/textureGather/u32/blue.wgsl new file mode 100644 index 0000000..9751b7c --- /dev/null +++ b/test/intrinsics/textureGather/u32/blue.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<u32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<u32> = textureGather(2, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/u32/blue.wgsl.expected.hlsl b/test/intrinsics/textureGather/u32/blue.wgsl.expected.hlsl new file mode 100644 index 0000000..6f3f6d3 --- /dev/null +++ b/test/intrinsics/textureGather/u32/blue.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<uint4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + uint4 res = t.GatherBlue(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/u32/blue.wgsl.expected.msl b/test/intrinsics/textureGather/u32/blue.wgsl.expected.msl new file mode 100644 index 0000000..55a95fc --- /dev/null +++ b/test/intrinsics/textureGather/u32/blue.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<uint, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + uint4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::z); + return; +} +
diff --git a/test/intrinsics/textureGather/u32/blue.wgsl.expected.spvasm b/test/intrinsics/textureGather/u32/blue.wgsl.expected.spvasm new file mode 100644 index 0000000..e821a7c --- /dev/null +++ b/test/intrinsics/textureGather/u32/blue.wgsl.expected.spvasm
@@ -0,0 +1,45 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 26 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %uint = OpTypeInt 32 0 + %3 = OpTypeImage %uint 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4uint = OpTypeVector %uint 4 + %16 = OpTypeSampledImage %3 + %float = OpTypeFloat 32 + %v2float = OpTypeVector %float 2 + %20 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_2 = OpConstant %int 2 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %25 = OpConstantNull %v4uint + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %25 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4uint %17 %20 %int_2 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/u32/blue.wgsl.expected.wgsl b/test/intrinsics/textureGather/u32/blue.wgsl.expected.wgsl new file mode 100644 index 0000000..5fdeb7e --- /dev/null +++ b/test/intrinsics/textureGather/u32/blue.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<u32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<u32> = textureGather(2, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/u32/green.wgsl b/test/intrinsics/textureGather/u32/green.wgsl new file mode 100644 index 0000000..83edac0 --- /dev/null +++ b/test/intrinsics/textureGather/u32/green.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<u32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<u32> = textureGather(1, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/u32/green.wgsl.expected.hlsl b/test/intrinsics/textureGather/u32/green.wgsl.expected.hlsl new file mode 100644 index 0000000..9ec62e8 --- /dev/null +++ b/test/intrinsics/textureGather/u32/green.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<uint4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + uint4 res = t.GatherGreen(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/u32/green.wgsl.expected.msl b/test/intrinsics/textureGather/u32/green.wgsl.expected.msl new file mode 100644 index 0000000..41be791 --- /dev/null +++ b/test/intrinsics/textureGather/u32/green.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<uint, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + uint4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::y); + return; +} +
diff --git a/test/intrinsics/textureGather/u32/green.wgsl.expected.spvasm b/test/intrinsics/textureGather/u32/green.wgsl.expected.spvasm new file mode 100644 index 0000000..54bd928 --- /dev/null +++ b/test/intrinsics/textureGather/u32/green.wgsl.expected.spvasm
@@ -0,0 +1,45 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 26 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %uint = OpTypeInt 32 0 + %3 = OpTypeImage %uint 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4uint = OpTypeVector %uint 4 + %16 = OpTypeSampledImage %3 + %float = OpTypeFloat 32 + %v2float = OpTypeVector %float 2 + %20 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %25 = OpConstantNull %v4uint + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %25 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4uint %17 %20 %int_1 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/u32/green.wgsl.expected.wgsl b/test/intrinsics/textureGather/u32/green.wgsl.expected.wgsl new file mode 100644 index 0000000..17b8423 --- /dev/null +++ b/test/intrinsics/textureGather/u32/green.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<u32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<u32> = textureGather(1, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/u32/red.wgsl b/test/intrinsics/textureGather/u32/red.wgsl new file mode 100644 index 0000000..e3ca7f8 --- /dev/null +++ b/test/intrinsics/textureGather/u32/red.wgsl
@@ -0,0 +1,7 @@ +[[group(1), binding(0)]] var t : texture_2d<u32>; +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<u32> = textureGather(0, t, s, vec2<f32>()); +}
diff --git a/test/intrinsics/textureGather/u32/red.wgsl.expected.hlsl b/test/intrinsics/textureGather/u32/red.wgsl.expected.hlsl new file mode 100644 index 0000000..a959745 --- /dev/null +++ b/test/intrinsics/textureGather/u32/red.wgsl.expected.hlsl
@@ -0,0 +1,7 @@ +Texture2D<uint4> t : register(t0, space1); +SamplerState s : register(s1, space1); + +void main() { + uint4 res = t.GatherRed(s, float2(0.0f, 0.0f)); + return; +}
diff --git a/test/intrinsics/textureGather/u32/red.wgsl.expected.msl b/test/intrinsics/textureGather/u32/red.wgsl.expected.msl new file mode 100644 index 0000000..b16b367 --- /dev/null +++ b/test/intrinsics/textureGather/u32/red.wgsl.expected.msl
@@ -0,0 +1,8 @@ +#include <metal_stdlib> + +using namespace metal; +fragment void tint_symbol(texture2d<uint, access::sample> tint_symbol_1 [[texture(0)]], sampler tint_symbol_2 [[sampler(0)]]) { + uint4 res = tint_symbol_1.gather(tint_symbol_2, float2(), int2(0), component::x); + return; +} +
diff --git a/test/intrinsics/textureGather/u32/red.wgsl.expected.spvasm b/test/intrinsics/textureGather/u32/red.wgsl.expected.spvasm new file mode 100644 index 0000000..8c52b9c --- /dev/null +++ b/test/intrinsics/textureGather/u32/red.wgsl.expected.spvasm
@@ -0,0 +1,45 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 26 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpName %t "t" + OpName %s "s" + OpName %main "main" + OpName %res "res" + OpDecorate %t DescriptorSet 1 + OpDecorate %t Binding 0 + OpDecorate %s DescriptorSet 1 + OpDecorate %s Binding 1 + %uint = OpTypeInt 32 0 + %3 = OpTypeImage %uint 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 + %t = OpVariable %_ptr_UniformConstant_3 UniformConstant + %7 = OpTypeSampler +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %s = OpVariable %_ptr_UniformConstant_7 UniformConstant + %void = OpTypeVoid + %8 = OpTypeFunction %void + %v4uint = OpTypeVector %uint 4 + %16 = OpTypeSampledImage %3 + %float = OpTypeFloat 32 + %v2float = OpTypeVector %float 2 + %20 = OpConstantNull %v2float + %int = OpTypeInt 32 1 + %int_0 = OpConstant %int 0 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %25 = OpConstantNull %v4uint + %main = OpFunction %void None %8 + %11 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %25 + %14 = OpLoad %7 %s + %15 = OpLoad %3 %t + %17 = OpSampledImage %16 %15 %14 + %12 = OpImageGather %v4uint %17 %20 %int_0 + OpStore %res %12 + OpReturn + OpFunctionEnd
diff --git a/test/intrinsics/textureGather/u32/red.wgsl.expected.wgsl b/test/intrinsics/textureGather/u32/red.wgsl.expected.wgsl new file mode 100644 index 0000000..d3b2be8 --- /dev/null +++ b/test/intrinsics/textureGather/u32/red.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +[[group(1), binding(0)]] var t : texture_2d<u32>; + +[[group(1), binding(1)]] var s : sampler; + +[[stage(fragment)]] +fn main() { + var res : vec4<u32> = textureGather(0, t, s, vec2<f32>()); +}