HLSL-IR: implement pixel_local feature Bug: 373991286 Bug: 42242273 Change-Id: I47bfcef471d0e30063a1b4ac4879a27f2e5cbec6 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/211274 Reviewed-by: James Price <jrprice@google.com> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/tint/lang/core/ir/transform/shader_io.cc b/src/tint/lang/core/ir/transform/shader_io.cc index 20c295e..4e18bba 100644 --- a/src/tint/lang/core/ir/transform/shader_io.cc +++ b/src/tint/lang/core/ir/transform/shader_io.cc
@@ -80,11 +80,6 @@ continue; } - // Skip entry points with no inputs or outputs. - if (func->Params().IsEmpty() && func->ReturnType()->Is<core::type::Void>()) { - continue; - } - ProcessEntryPoint(func, make_backend_state(ir, func)); } @@ -127,6 +122,11 @@ auto new_params = backend->FinalizeInputs(); auto* new_ret_ty = backend->FinalizeOutputs(); + // Skip entry points with no new inputs or outputs. + if (!backend->HasInputs() && !backend->HasOutputs()) { + return; + } + // Rename the old function and remove its pipeline stage and workgroup size, as we will be // wrapping it with a new entry point. auto name = ir.NameOf(ep).Name();
diff --git a/src/tint/lang/core/ir/transform/shader_io.h b/src/tint/lang/core/ir/transform/shader_io.h index 689cf87..30c9db37 100644 --- a/src/tint/lang/core/ir/transform/shader_io.h +++ b/src/tint/lang/core/ir/transform/shader_io.h
@@ -51,9 +51,7 @@ /// @param type the type of the input /// @param attributes the IO attributes /// @returns the index of the input - virtual uint32_t AddInput(Symbol name, - const core::type::Type* type, - core::IOAttributes attributes) { + uint32_t AddInput(Symbol name, const core::type::Type* type, core::IOAttributes attributes) { inputs.Push({name, type, std::move(attributes)}); return uint32_t(inputs.Length() - 1); } @@ -63,13 +61,17 @@ /// @param type the type of the output /// @param attributes the IO attributes /// @returns the index of the output - virtual uint32_t AddOutput(Symbol name, - const core::type::Type* type, - core::IOAttributes attributes) { + uint32_t AddOutput(Symbol name, const core::type::Type* type, core::IOAttributes attributes) { outputs.Push({name, type, std::move(attributes)}); return uint32_t(outputs.Length() - 1); } + /// @returns true if inputs were added + bool HasInputs() const { return !inputs.IsEmpty(); } + + // @returns true if outputs were added + bool HasOutputs() const { return !outputs.IsEmpty(); } + /// Finalize the shader inputs and create any state needed for the new entry point function. /// @returns the list of function parameters for the new entry point virtual Vector<FunctionParam*, 4> FinalizeInputs() = 0;
diff --git a/src/tint/lang/hlsl/hlsl.def b/src/tint/lang/hlsl/hlsl.def index 877bf52..4d94062 100644 --- a/src/tint/lang/hlsl/hlsl.def +++ b/src/tint/lang/hlsl/hlsl.def
@@ -87,6 +87,8 @@ type texture_storage_2d_array<F: texel_format, A: access> type texture_storage_3d<F: texel_format, A: access> +type rasterizer_ordered_texture_2d<F: texel_format> + //////////////////////////////////////////////////////////////////////////////// // Type matchers // //////////////////////////////////////////////////////////////////////////////// @@ -195,6 +197,16 @@ implicit(T: fi32_f16) fn sign(T) -> i32 implicit(N: num, T: fi32_f16) fn sign(vec<N, T>) -> vec<N, i32> +implicit(C: iu32) fn textureStore(texture: rasterizer_ordered_texture_2d<f32_texel_format>, + coords: vec2<C>, + value: vec4<f32>) +implicit(C: iu32) fn textureStore(texture: rasterizer_ordered_texture_2d<i32_texel_format>, + coords: vec2<C>, + value: vec4<i32>) +implicit(C: iu32) fn textureStore(texture: rasterizer_ordered_texture_2d<u32_texel_format>, + coords: vec2<C>, + value: vec4<u32>) + implicit(C: iu32) fn textureStore(texture: texture_storage_1d<f32_texel_format, writable>, coords: C, value: vec4<f32>) @@ -529,6 +541,10 @@ location: vec2<i32>, sample_index: i32) -> vec4<f32> +@member_function implicit(F: f32_texel_format, C: iu32) fn Load(texture: rasterizer_ordered_texture_2d<F>, location: vec2<C>) -> vec4<f32> +@member_function implicit(F: u32_texel_format, C: iu32) fn Load(texture: rasterizer_ordered_texture_2d<F>, location: vec2<C>) -> vec4<u32> +@member_function implicit(F: i32_texel_format, C: iu32) fn Load(texture: rasterizer_ordered_texture_2d<F>, location: vec2<C>) -> vec4<i32> + @member_function implicit(F: f32_texel_format, A: readable) fn Load(texture: texture_storage_1d<F, A>, location: vec2<i32>) -> vec4<f32> @member_function implicit(F: f32_texel_format, A: readable) fn Load(texture: texture_storage_2d<F, A>,
diff --git a/src/tint/lang/hlsl/intrinsic/data.cc b/src/tint/lang/hlsl/intrinsic/data.cc index a09c776..751f89a 100644 --- a/src/tint/lang/hlsl/intrinsic/data.cc +++ b/src/tint/lang/hlsl/intrinsic/data.cc
@@ -871,6 +871,26 @@ }; +/// TypeMatcher for 'type rasterizer_ordered_texture_2d' +constexpr TypeMatcher kRasterizerOrderedTexture2DMatcher { +/* match */ [](MatchState& state, const Type* ty) -> const Type* { + Number F = Number::invalid; + if (!MatchRasterizerOrderedTexture2D(state, ty, F)) { + return nullptr; + } + F = state.Num(F); + if (!F.IsValid()) { + return nullptr; + } + return BuildRasterizerOrderedTexture2D(state, ty, F); + }, +/* print */ []([[maybe_unused]] MatchState* state, StyledText& out) {StyledText F; + state->PrintNum(F); + out << style::Type("rasterizer_ordered_texture_2d", "<", F, ">"); + } +}; + + /// TypeMatcher for 'match iu32' constexpr TypeMatcher kIu32Matcher { /* match */ [](MatchState& state, const Type* ty) -> const Type* { @@ -1195,13 +1215,14 @@ /* [42] */ kTextureStorage2DMatcher, /* [43] */ kTextureStorage2DArrayMatcher, /* [44] */ kTextureStorage3DMatcher, - /* [45] */ kIu32Matcher, - /* [46] */ kFiu32Matcher, - /* [47] */ kF32U32Matcher, - /* [48] */ kF32I32Matcher, - /* [49] */ kF32F16Matcher, - /* [50] */ kFi32F16Matcher, - /* [51] */ kFiu32F16Matcher, + /* [45] */ kRasterizerOrderedTexture2DMatcher, + /* [46] */ kIu32Matcher, + /* [47] */ kFiu32Matcher, + /* [48] */ kF32U32Matcher, + /* [49] */ kF32I32Matcher, + /* [50] */ kF32F16Matcher, + /* [51] */ kFi32F16Matcher, + /* [52] */ kFiu32F16Matcher, }; /// The template numbers, and number matchers @@ -1240,7 +1261,7 @@ /* [15] */ MatcherIndex(4), /* [16] */ MatcherIndex(8), /* [17] */ MatcherIndex(5), - /* [18] */ MatcherIndex(45), + /* [18] */ MatcherIndex(46), /* [19] */ MatcherIndex(7), /* [20] */ MatcherIndex(22), /* [21] */ MatcherIndex(2), @@ -1288,121 +1309,128 @@ /* [63] */ MatcherIndex(41), /* [64] */ MatcherIndex(10), /* [65] */ MatcherIndex(9), - /* [66] */ MatcherIndex(5), + /* [66] */ MatcherIndex(1), /* [67] */ MatcherIndex(42), /* [68] */ MatcherIndex(10), /* [69] */ MatcherIndex(9), - /* [70] */ MatcherIndex(7), + /* [70] */ MatcherIndex(5), /* [71] */ MatcherIndex(43), /* [72] */ MatcherIndex(10), /* [73] */ MatcherIndex(9), - /* [74] */ MatcherIndex(6), + /* [74] */ MatcherIndex(7), /* [75] */ MatcherIndex(44), /* [76] */ MatcherIndex(10), /* [77] */ MatcherIndex(9), - /* [78] */ MatcherIndex(41), - /* [79] */ MatcherIndex(12), - /* [80] */ MatcherIndex(9), - /* [81] */ MatcherIndex(42), - /* [82] */ MatcherIndex(12), - /* [83] */ MatcherIndex(9), - /* [84] */ MatcherIndex(43), - /* [85] */ MatcherIndex(12), - /* [86] */ MatcherIndex(9), - /* [87] */ MatcherIndex(44), - /* [88] */ MatcherIndex(12), - /* [89] */ MatcherIndex(9), - /* [90] */ MatcherIndex(41), - /* [91] */ MatcherIndex(11), - /* [92] */ MatcherIndex(9), - /* [93] */ MatcherIndex(42), - /* [94] */ MatcherIndex(11), - /* [95] */ MatcherIndex(9), - /* [96] */ MatcherIndex(43), - /* [97] */ MatcherIndex(11), - /* [98] */ MatcherIndex(9), - /* [99] */ MatcherIndex(44), - /* [100] */ MatcherIndex(11), - /* [101] */ MatcherIndex(9), - /* [102] */ MatcherIndex(41), - /* [103] */ MatcherIndex(0), - /* [104] */ MatcherIndex(1), - /* [105] */ MatcherIndex(42), - /* [106] */ MatcherIndex(0), - /* [107] */ MatcherIndex(1), - /* [108] */ MatcherIndex(43), - /* [109] */ MatcherIndex(0), - /* [110] */ MatcherIndex(1), - /* [111] */ MatcherIndex(44), - /* [112] */ MatcherIndex(0), - /* [113] */ MatcherIndex(1), - /* [114] */ MatcherIndex(24), - /* [115] */ MatcherIndex(7), - /* [116] */ MatcherIndex(11), - /* [117] */ MatcherIndex(5), - /* [118] */ MatcherIndex(11), - /* [119] */ MatcherIndex(4), - /* [120] */ MatcherIndex(11), - /* [121] */ MatcherIndex(6), + /* [78] */ MatcherIndex(6), + /* [79] */ MatcherIndex(41), + /* [80] */ MatcherIndex(12), + /* [81] */ MatcherIndex(9), + /* [82] */ MatcherIndex(42), + /* [83] */ MatcherIndex(12), + /* [84] */ MatcherIndex(9), + /* [85] */ MatcherIndex(43), + /* [86] */ MatcherIndex(12), + /* [87] */ MatcherIndex(9), + /* [88] */ MatcherIndex(44), + /* [89] */ MatcherIndex(12), + /* [90] */ MatcherIndex(9), + /* [91] */ MatcherIndex(41), + /* [92] */ MatcherIndex(11), + /* [93] */ MatcherIndex(9), + /* [94] */ MatcherIndex(42), + /* [95] */ MatcherIndex(11), + /* [96] */ MatcherIndex(9), + /* [97] */ MatcherIndex(43), + /* [98] */ MatcherIndex(11), + /* [99] */ MatcherIndex(9), + /* [100] */ MatcherIndex(44), + /* [101] */ MatcherIndex(11), + /* [102] */ MatcherIndex(9), + /* [103] */ MatcherIndex(41), + /* [104] */ MatcherIndex(0), + /* [105] */ MatcherIndex(1), + /* [106] */ MatcherIndex(42), + /* [107] */ MatcherIndex(0), + /* [108] */ MatcherIndex(1), + /* [109] */ MatcherIndex(43), + /* [110] */ MatcherIndex(0), + /* [111] */ MatcherIndex(1), + /* [112] */ MatcherIndex(44), + /* [113] */ MatcherIndex(0), + /* [114] */ MatcherIndex(1), + /* [115] */ MatcherIndex(24), + /* [116] */ MatcherIndex(7), + /* [117] */ MatcherIndex(11), + /* [118] */ MatcherIndex(5), + /* [119] */ MatcherIndex(11), + /* [120] */ MatcherIndex(4), + /* [121] */ MatcherIndex(45), /* [122] */ MatcherIndex(10), /* [123] */ MatcherIndex(0), /* [124] */ MatcherIndex(11), - /* [125] */ MatcherIndex(0), - /* [126] */ MatcherIndex(29), - /* [127] */ MatcherIndex(0), - /* [128] */ MatcherIndex(30), - /* [129] */ MatcherIndex(0), - /* [130] */ MatcherIndex(10), - /* [131] */ MatcherIndex(4), - /* [132] */ MatcherIndex(31), - /* [133] */ MatcherIndex(0), - /* [134] */ MatcherIndex(40), - /* [135] */ MatcherIndex(0), - /* [136] */ MatcherIndex(32), - /* [137] */ MatcherIndex(0), - /* [138] */ MatcherIndex(10), - /* [139] */ MatcherIndex(5), - /* [140] */ MatcherIndex(10), - /* [141] */ MatcherIndex(7), - /* [142] */ MatcherIndex(11), - /* [143] */ MatcherIndex(7), - /* [144] */ MatcherIndex(24), - /* [145] */ MatcherIndex(9), - /* [146] */ MatcherIndex(10), - /* [147] */ MatcherIndex(6), - /* [148] */ MatcherIndex(33), - /* [149] */ MatcherIndex(0), - /* [150] */ MatcherIndex(34), - /* [151] */ MatcherIndex(0), - /* [152] */ MatcherIndex(24), - /* [153] */ MatcherIndex(0), - /* [154] */ MatcherIndex(29), - /* [155] */ MatcherIndex(6), - /* [156] */ MatcherIndex(30), - /* [157] */ MatcherIndex(6), - /* [158] */ MatcherIndex(31), - /* [159] */ MatcherIndex(6), - /* [160] */ MatcherIndex(32), - /* [161] */ MatcherIndex(6), - /* [162] */ MatcherIndex(33), - /* [163] */ MatcherIndex(6), - /* [164] */ MatcherIndex(34), - /* [165] */ MatcherIndex(6), - /* [166] */ MatcherIndex(47), - /* [167] */ MatcherIndex(48), - /* [168] */ MatcherIndex(49), - /* [169] */ MatcherIndex(26), - /* [170] */ MatcherIndex(25), - /* [171] */ MatcherIndex(50), - /* [172] */ MatcherIndex(51), - /* [173] */ MatcherIndex(46), - /* [174] */ MatcherIndex(35), - /* [175] */ MatcherIndex(36), - /* [176] */ MatcherIndex(39), - /* [177] */ MatcherIndex(28), - /* [178] */ MatcherIndex(37), - /* [179] */ MatcherIndex(38), - /* [180] */ MatcherIndex(27), + /* [125] */ MatcherIndex(6), + /* [126] */ MatcherIndex(45), + /* [127] */ MatcherIndex(12), + /* [128] */ MatcherIndex(45), + /* [129] */ MatcherIndex(11), + /* [130] */ MatcherIndex(0), + /* [131] */ MatcherIndex(29), + /* [132] */ MatcherIndex(0), + /* [133] */ MatcherIndex(30), + /* [134] */ MatcherIndex(0), + /* [135] */ MatcherIndex(10), + /* [136] */ MatcherIndex(4), + /* [137] */ MatcherIndex(31), + /* [138] */ MatcherIndex(0), + /* [139] */ MatcherIndex(40), + /* [140] */ MatcherIndex(0), + /* [141] */ MatcherIndex(32), + /* [142] */ MatcherIndex(0), + /* [143] */ MatcherIndex(45), + /* [144] */ MatcherIndex(0), + /* [145] */ MatcherIndex(10), + /* [146] */ MatcherIndex(5), + /* [147] */ MatcherIndex(10), + /* [148] */ MatcherIndex(7), + /* [149] */ MatcherIndex(11), + /* [150] */ MatcherIndex(7), + /* [151] */ MatcherIndex(24), + /* [152] */ MatcherIndex(9), + /* [153] */ MatcherIndex(10), + /* [154] */ MatcherIndex(6), + /* [155] */ MatcherIndex(33), + /* [156] */ MatcherIndex(0), + /* [157] */ MatcherIndex(34), + /* [158] */ MatcherIndex(0), + /* [159] */ MatcherIndex(24), + /* [160] */ MatcherIndex(0), + /* [161] */ MatcherIndex(29), + /* [162] */ MatcherIndex(6), + /* [163] */ MatcherIndex(30), + /* [164] */ MatcherIndex(6), + /* [165] */ MatcherIndex(31), + /* [166] */ MatcherIndex(6), + /* [167] */ MatcherIndex(32), + /* [168] */ MatcherIndex(6), + /* [169] */ MatcherIndex(33), + /* [170] */ MatcherIndex(6), + /* [171] */ MatcherIndex(34), + /* [172] */ MatcherIndex(6), + /* [173] */ MatcherIndex(48), + /* [174] */ MatcherIndex(49), + /* [175] */ MatcherIndex(50), + /* [176] */ MatcherIndex(26), + /* [177] */ MatcherIndex(25), + /* [178] */ MatcherIndex(51), + /* [179] */ MatcherIndex(52), + /* [180] */ MatcherIndex(47), + /* [181] */ MatcherIndex(35), + /* [182] */ MatcherIndex(36), + /* [183] */ MatcherIndex(39), + /* [184] */ MatcherIndex(28), + /* [185] */ MatcherIndex(37), + /* [186] */ MatcherIndex(38), + /* [187] */ MatcherIndex(27), }; static_assert(MatcherIndicesIndex::CanIndex(kMatcherIndices), @@ -1412,7 +1440,7 @@ { /* [0] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(132), + /* matcher_indices */ MatcherIndicesIndex(137), }, { /* [1] */ @@ -1442,7 +1470,7 @@ { /* [6] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(136), + /* matcher_indices */ MatcherIndicesIndex(141), }, { /* [7] */ @@ -1472,7 +1500,7 @@ { /* [12] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(150), + /* matcher_indices */ MatcherIndicesIndex(157), }, { /* [13] */ @@ -1502,7 +1530,7 @@ { /* [18] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(175), + /* matcher_indices */ MatcherIndicesIndex(182), }, { /* [19] */ @@ -1532,7 +1560,7 @@ { /* [24] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(179), + /* matcher_indices */ MatcherIndicesIndex(186), }, { /* [25] */ @@ -1562,27 +1590,27 @@ { /* [30] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(156), + /* matcher_indices */ MatcherIndicesIndex(163), }, { /* [31] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [32] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [33] */ /* usage */ core::ParameterUsage::kDdx, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [34] */ /* usage */ core::ParameterUsage::kDdy, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [35] */ @@ -1592,27 +1620,27 @@ { /* [36] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(158), + /* matcher_indices */ MatcherIndicesIndex(165), }, { /* [37] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [38] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [39] */ /* usage */ core::ParameterUsage::kDdx, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [40] */ /* usage */ core::ParameterUsage::kDdy, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [41] */ @@ -1622,37 +1650,37 @@ { /* [42] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(160), + /* matcher_indices */ MatcherIndicesIndex(167), }, { /* [43] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [44] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [45] */ /* usage */ core::ParameterUsage::kDdx, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [46] */ /* usage */ core::ParameterUsage::kDdy, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [47] */ /* usage */ core::ParameterUsage::kOffset, - /* matcher_indices */ MatcherIndicesIndex(130), + /* matcher_indices */ MatcherIndicesIndex(135), }, { /* [48] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(114), + /* matcher_indices */ MatcherIndicesIndex(115), }, { /* [49] */ @@ -1677,17 +1705,17 @@ { /* [53] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(174), + /* matcher_indices */ MatcherIndicesIndex(181), }, { /* [54] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(177), + /* matcher_indices */ MatcherIndicesIndex(184), }, { /* [55] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [56] */ @@ -1702,17 +1730,17 @@ { /* [58] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(175), + /* matcher_indices */ MatcherIndicesIndex(182), }, { /* [59] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(177), + /* matcher_indices */ MatcherIndicesIndex(184), }, { /* [60] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [61] */ @@ -1727,7 +1755,7 @@ { /* [63] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(128), + /* matcher_indices */ MatcherIndicesIndex(133), }, { /* [64] */ @@ -1752,7 +1780,7 @@ { /* [68] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(148), + /* matcher_indices */ MatcherIndicesIndex(155), }, { /* [69] */ @@ -1777,7 +1805,7 @@ { /* [73] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(174), + /* matcher_indices */ MatcherIndicesIndex(181), }, { /* [74] */ @@ -1802,7 +1830,7 @@ { /* [78] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(178), + /* matcher_indices */ MatcherIndicesIndex(185), }, { /* [79] */ @@ -1827,17 +1855,17 @@ { /* [83] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(156), + /* matcher_indices */ MatcherIndicesIndex(163), }, { /* [84] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [85] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [86] */ @@ -1852,17 +1880,17 @@ { /* [88] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(158), + /* matcher_indices */ MatcherIndicesIndex(165), }, { /* [89] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [90] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [91] */ @@ -1877,17 +1905,17 @@ { /* [93] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(160), + /* matcher_indices */ MatcherIndicesIndex(167), }, { /* [94] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [95] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [96] */ @@ -1897,22 +1925,22 @@ { /* [97] */ /* usage */ core::ParameterUsage::kOffset, - /* matcher_indices */ MatcherIndicesIndex(130), + /* matcher_indices */ MatcherIndicesIndex(135), }, { /* [98] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(174), + /* matcher_indices */ MatcherIndicesIndex(181), }, { /* [99] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(177), + /* matcher_indices */ MatcherIndicesIndex(184), }, { /* [100] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [101] */ @@ -1927,17 +1955,17 @@ { /* [103] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(175), + /* matcher_indices */ MatcherIndicesIndex(182), }, { /* [104] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(177), + /* matcher_indices */ MatcherIndicesIndex(184), }, { /* [105] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [106] */ @@ -1952,67 +1980,67 @@ { /* [108] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(162), + /* matcher_indices */ MatcherIndicesIndex(169), }, { /* [109] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [110] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [111] */ /* usage */ core::ParameterUsage::kDdx, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [112] */ /* usage */ core::ParameterUsage::kDdy, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [113] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(164), + /* matcher_indices */ MatcherIndicesIndex(171), }, { /* [114] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [115] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(120), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [116] */ /* usage */ core::ParameterUsage::kDdx, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [117] */ /* usage */ core::ParameterUsage::kDdy, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [118] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(156), + /* matcher_indices */ MatcherIndicesIndex(163), }, { /* [119] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [120] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [121] */ @@ -2027,17 +2055,17 @@ { /* [123] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(158), + /* matcher_indices */ MatcherIndicesIndex(165), }, { /* [124] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [125] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [126] */ @@ -2052,17 +2080,17 @@ { /* [128] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(160), + /* matcher_indices */ MatcherIndicesIndex(167), }, { /* [129] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [130] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [131] */ @@ -2072,22 +2100,22 @@ { /* [132] */ /* usage */ core::ParameterUsage::kOffset, - /* matcher_indices */ MatcherIndicesIndex(130), + /* matcher_indices */ MatcherIndicesIndex(135), }, { /* [133] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(174), + /* matcher_indices */ MatcherIndicesIndex(181), }, { /* [134] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [135] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [136] */ @@ -2102,17 +2130,17 @@ { /* [138] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(175), + /* matcher_indices */ MatcherIndicesIndex(182), }, { /* [139] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [140] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [141] */ @@ -2167,17 +2195,17 @@ { /* [151] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(178), + /* matcher_indices */ MatcherIndicesIndex(185), }, { /* [152] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(177), + /* matcher_indices */ MatcherIndicesIndex(184), }, { /* [153] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [154] */ @@ -2187,17 +2215,17 @@ { /* [155] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(179), + /* matcher_indices */ MatcherIndicesIndex(186), }, { /* [156] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(177), + /* matcher_indices */ MatcherIndicesIndex(184), }, { /* [157] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(120), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [158] */ @@ -2207,17 +2235,17 @@ { /* [159] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(174), + /* matcher_indices */ MatcherIndicesIndex(181), }, { /* [160] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [161] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [162] */ @@ -2227,17 +2255,17 @@ { /* [163] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(175), + /* matcher_indices */ MatcherIndicesIndex(182), }, { /* [164] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [165] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [166] */ @@ -2247,17 +2275,17 @@ { /* [167] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(128), + /* matcher_indices */ MatcherIndicesIndex(133), }, { /* [168] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [169] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [170] */ @@ -2267,17 +2295,17 @@ { /* [171] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(132), + /* matcher_indices */ MatcherIndicesIndex(137), }, { /* [172] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [173] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [174] */ @@ -2287,7 +2315,7 @@ { /* [175] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(126), + /* matcher_indices */ MatcherIndicesIndex(131), }, { /* [176] */ @@ -2307,7 +2335,7 @@ { /* [179] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(132), + /* matcher_indices */ MatcherIndicesIndex(137), }, { /* [180] */ @@ -2327,7 +2355,7 @@ { /* [183] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(108), + /* matcher_indices */ MatcherIndicesIndex(109), }, { /* [184] */ @@ -2347,7 +2375,7 @@ { /* [187] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(136), + /* matcher_indices */ MatcherIndicesIndex(141), }, { /* [188] */ @@ -2367,7 +2395,7 @@ { /* [191] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(111), + /* matcher_indices */ MatcherIndicesIndex(112), }, { /* [192] */ @@ -2387,7 +2415,7 @@ { /* [195] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(150), + /* matcher_indices */ MatcherIndicesIndex(157), }, { /* [196] */ @@ -2407,7 +2435,7 @@ { /* [199] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(134), + /* matcher_indices */ MatcherIndicesIndex(139), }, { /* [200] */ @@ -2427,7 +2455,7 @@ { /* [203] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(175), + /* matcher_indices */ MatcherIndicesIndex(182), }, { /* [204] */ @@ -2447,7 +2475,7 @@ { /* [207] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(179), + /* matcher_indices */ MatcherIndicesIndex(186), }, { /* [208] */ @@ -2467,7 +2495,7 @@ { /* [211] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(176), + /* matcher_indices */ MatcherIndicesIndex(183), }, { /* [212] */ @@ -2487,17 +2515,17 @@ { /* [215] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(156), + /* matcher_indices */ MatcherIndicesIndex(163), }, { /* [216] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [217] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(73), + /* matcher_indices */ MatcherIndicesIndex(77), }, { /* [218] */ @@ -2507,17 +2535,17 @@ { /* [219] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(158), + /* matcher_indices */ MatcherIndicesIndex(165), }, { /* [220] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [221] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [222] */ @@ -2527,37 +2555,37 @@ { /* [223] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(160), + /* matcher_indices */ MatcherIndicesIndex(167), }, { /* [224] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [225] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [226] */ /* usage */ core::ParameterUsage::kOffset, - /* matcher_indices */ MatcherIndicesIndex(130), + /* matcher_indices */ MatcherIndicesIndex(135), }, { /* [227] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(162), + /* matcher_indices */ MatcherIndicesIndex(169), }, { /* [228] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [229] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [230] */ @@ -2567,17 +2595,17 @@ { /* [231] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(164), + /* matcher_indices */ MatcherIndicesIndex(171), }, { /* [232] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [233] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(120), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [234] */ @@ -2587,17 +2615,17 @@ { /* [235] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(178), + /* matcher_indices */ MatcherIndicesIndex(185), }, { /* [236] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(177), + /* matcher_indices */ MatcherIndicesIndex(184), }, { /* [237] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [238] */ @@ -2607,17 +2635,17 @@ { /* [239] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(179), + /* matcher_indices */ MatcherIndicesIndex(186), }, { /* [240] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(177), + /* matcher_indices */ MatcherIndicesIndex(184), }, { /* [241] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(120), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [242] */ @@ -2627,17 +2655,17 @@ { /* [243] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(162), + /* matcher_indices */ MatcherIndicesIndex(169), }, { /* [244] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [245] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [246] */ @@ -2647,17 +2675,17 @@ { /* [247] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(164), + /* matcher_indices */ MatcherIndicesIndex(171), }, { /* [248] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [249] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(120), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [250] */ @@ -2667,17 +2695,17 @@ { /* [251] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(178), + /* matcher_indices */ MatcherIndicesIndex(185), }, { /* [252] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [253] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [254] */ @@ -2687,17 +2715,17 @@ { /* [255] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(179), + /* matcher_indices */ MatcherIndicesIndex(186), }, { /* [256] */ /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [257] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(120), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [258] */ @@ -2752,22 +2780,22 @@ { /* [268] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(63), + /* matcher_indices */ MatcherIndicesIndex(121), }, { /* [269] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(4), + /* matcher_indices */ MatcherIndicesIndex(9), }, { /* [270] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(120), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [271] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(67), + /* matcher_indices */ MatcherIndicesIndex(126), }, { /* [272] */ @@ -2777,72 +2805,72 @@ { /* [273] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(120), + /* matcher_indices */ MatcherIndicesIndex(119), }, { /* [274] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(71), + /* matcher_indices */ MatcherIndicesIndex(128), }, { /* [275] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(122), + /* matcher_indices */ MatcherIndicesIndex(9), }, { /* [276] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(120), + /* matcher_indices */ MatcherIndicesIndex(117), }, { /* [277] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(75), + /* matcher_indices */ MatcherIndicesIndex(63), }, { /* [278] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(122), + /* matcher_indices */ MatcherIndicesIndex(4), }, { /* [279] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(120), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [280] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(78), + /* matcher_indices */ MatcherIndicesIndex(67), }, { /* [281] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(4), + /* matcher_indices */ MatcherIndicesIndex(9), }, { /* [282] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(118), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [283] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(81), + /* matcher_indices */ MatcherIndicesIndex(71), }, { /* [284] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(9), + /* matcher_indices */ MatcherIndicesIndex(122), }, { /* [285] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(118), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [286] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(84), + /* matcher_indices */ MatcherIndicesIndex(75), }, { /* [287] */ @@ -2852,57 +2880,57 @@ { /* [288] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(118), + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [289] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(87), + /* matcher_indices */ MatcherIndicesIndex(79), }, { /* [290] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(122), + /* matcher_indices */ MatcherIndicesIndex(4), }, { /* [291] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(118), + /* matcher_indices */ MatcherIndicesIndex(119), }, { /* [292] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(90), + /* matcher_indices */ MatcherIndicesIndex(82), }, { /* [293] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(4), + /* matcher_indices */ MatcherIndicesIndex(9), }, { /* [294] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(116), + /* matcher_indices */ MatcherIndicesIndex(119), }, { /* [295] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(93), + /* matcher_indices */ MatcherIndicesIndex(85), }, { /* [296] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(9), + /* matcher_indices */ MatcherIndicesIndex(122), }, { /* [297] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(116), + /* matcher_indices */ MatcherIndicesIndex(119), }, { /* [298] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(96), + /* matcher_indices */ MatcherIndicesIndex(88), }, { /* [299] */ @@ -2912,102 +2940,102 @@ { /* [300] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(116), + /* matcher_indices */ MatcherIndicesIndex(119), }, { /* [301] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(99), + /* matcher_indices */ MatcherIndicesIndex(91), }, { /* [302] */ /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(122), + /* matcher_indices */ MatcherIndicesIndex(4), }, { /* [303] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(116), + /* matcher_indices */ MatcherIndicesIndex(117), }, { /* [304] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(134), + /* matcher_indices */ MatcherIndicesIndex(94), }, { /* [305] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(14), + /* usage */ core::ParameterUsage::kCoords, + /* matcher_indices */ MatcherIndicesIndex(9), }, { /* [306] */ - /* usage */ core::ParameterUsage::kSampleIndex, - /* matcher_indices */ MatcherIndicesIndex(8), + /* usage */ core::ParameterUsage::kValue, + /* matcher_indices */ MatcherIndicesIndex(117), }, { /* [307] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(176), + /* matcher_indices */ MatcherIndicesIndex(97), }, { /* [308] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(14), + /* usage */ core::ParameterUsage::kCoords, + /* matcher_indices */ MatcherIndicesIndex(122), }, { /* [309] */ - /* usage */ core::ParameterUsage::kSampleIndex, - /* matcher_indices */ MatcherIndicesIndex(8), + /* usage */ core::ParameterUsage::kValue, + /* matcher_indices */ MatcherIndicesIndex(117), }, { /* [310] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(144), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(100), }, { /* [311] */ - /* usage */ core::ParameterUsage::kOffset, - /* matcher_indices */ MatcherIndicesIndex(7), + /* usage */ core::ParameterUsage::kCoords, + /* matcher_indices */ MatcherIndicesIndex(122), }, { /* [312] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(7), + /* matcher_indices */ MatcherIndicesIndex(117), }, { /* [313] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(144), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(139), }, { /* [314] */ - /* usage */ core::ParameterUsage::kOffset, - /* matcher_indices */ MatcherIndicesIndex(7), + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(14), }, { /* [315] */ - /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(65), + /* usage */ core::ParameterUsage::kSampleIndex, + /* matcher_indices */ MatcherIndicesIndex(8), }, { /* [316] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(144), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(183), }, { /* [317] */ - /* usage */ core::ParameterUsage::kOffset, - /* matcher_indices */ MatcherIndicesIndex(7), + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(14), }, { /* [318] */ - /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(138), + /* usage */ core::ParameterUsage::kSampleIndex, + /* matcher_indices */ MatcherIndicesIndex(8), }, { /* [319] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(144), + /* matcher_indices */ MatcherIndicesIndex(151), }, { /* [320] */ @@ -3017,12 +3045,12 @@ { /* [321] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(116), + /* matcher_indices */ MatcherIndicesIndex(7), }, { /* [322] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(144), + /* matcher_indices */ MatcherIndicesIndex(151), }, { /* [323] */ @@ -3032,12 +3060,12 @@ { /* [324] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(5), + /* matcher_indices */ MatcherIndicesIndex(69), }, { /* [325] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(144), + /* matcher_indices */ MatcherIndicesIndex(151), }, { /* [326] */ @@ -3047,12 +3075,12 @@ { /* [327] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(69), + /* matcher_indices */ MatcherIndicesIndex(145), }, { /* [328] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(144), + /* matcher_indices */ MatcherIndicesIndex(151), }, { /* [329] */ @@ -3062,12 +3090,12 @@ { /* [330] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(140), + /* matcher_indices */ MatcherIndicesIndex(117), }, { /* [331] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(144), + /* matcher_indices */ MatcherIndicesIndex(151), }, { /* [332] */ @@ -3077,87 +3105,87 @@ { /* [333] */ /* usage */ core::ParameterUsage::kValue, - /* matcher_indices */ MatcherIndicesIndex(142), + /* matcher_indices */ MatcherIndicesIndex(5), }, { /* [334] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(148), + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(151), }, { /* [335] */ - /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* usage */ core::ParameterUsage::kOffset, + /* matcher_indices */ MatcherIndicesIndex(7), }, { /* [336] */ - /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(146), + /* usage */ core::ParameterUsage::kValue, + /* matcher_indices */ MatcherIndicesIndex(73), }, { /* [337] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(150), + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(151), }, { /* [338] */ - /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* usage */ core::ParameterUsage::kOffset, + /* matcher_indices */ MatcherIndicesIndex(7), }, { /* [339] */ - /* usage */ core::ParameterUsage::kCoords, - /* matcher_indices */ MatcherIndicesIndex(120), + /* usage */ core::ParameterUsage::kValue, + /* matcher_indices */ MatcherIndicesIndex(147), }, { /* [340] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(128), + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(151), }, { /* [341] */ - /* usage */ core::ParameterUsage::kWidth, - /* matcher_indices */ MatcherIndicesIndex(11), + /* usage */ core::ParameterUsage::kOffset, + /* matcher_indices */ MatcherIndicesIndex(7), }, { /* [342] */ - /* usage */ core::ParameterUsage::kHeight, - /* matcher_indices */ MatcherIndicesIndex(11), + /* usage */ core::ParameterUsage::kValue, + /* matcher_indices */ MatcherIndicesIndex(149), }, { /* [343] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(105), + /* matcher_indices */ MatcherIndicesIndex(155), }, { /* [344] */ - /* usage */ core::ParameterUsage::kWidth, - /* matcher_indices */ MatcherIndicesIndex(11), + /* usage */ core::ParameterUsage::kSampler, + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [345] */ - /* usage */ core::ParameterUsage::kHeight, - /* matcher_indices */ MatcherIndicesIndex(11), + /* usage */ core::ParameterUsage::kCoords, + /* matcher_indices */ MatcherIndicesIndex(153), }, { /* [346] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(148), + /* matcher_indices */ MatcherIndicesIndex(157), }, { /* [347] */ - /* usage */ core::ParameterUsage::kWidth, - /* matcher_indices */ MatcherIndicesIndex(11), + /* usage */ core::ParameterUsage::kSampler, + /* matcher_indices */ MatcherIndicesIndex(187), }, { /* [348] */ - /* usage */ core::ParameterUsage::kHeight, - /* matcher_indices */ MatcherIndicesIndex(11), + /* usage */ core::ParameterUsage::kCoords, + /* matcher_indices */ MatcherIndicesIndex(124), }, { /* [349] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(174), + /* matcher_indices */ MatcherIndicesIndex(133), }, { /* [350] */ @@ -3172,7 +3200,7 @@ { /* [352] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(178), + /* matcher_indices */ MatcherIndicesIndex(106), }, { /* [353] */ @@ -3187,262 +3215,317 @@ { /* [355] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(154), + /* matcher_indices */ MatcherIndicesIndex(155), }, { /* [356] */ - /* usage */ core::ParameterUsage::kSampler, - /* matcher_indices */ MatcherIndicesIndex(180), + /* usage */ core::ParameterUsage::kWidth, + /* matcher_indices */ MatcherIndicesIndex(11), }, { /* [357] */ + /* usage */ core::ParameterUsage::kHeight, + /* matcher_indices */ MatcherIndicesIndex(11), + }, + { + /* [358] */ + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(181), + }, + { + /* [359] */ + /* usage */ core::ParameterUsage::kWidth, + /* matcher_indices */ MatcherIndicesIndex(11), + }, + { + /* [360] */ + /* usage */ core::ParameterUsage::kHeight, + /* matcher_indices */ MatcherIndicesIndex(11), + }, + { + /* [361] */ + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(185), + }, + { + /* [362] */ + /* usage */ core::ParameterUsage::kWidth, + /* matcher_indices */ MatcherIndicesIndex(11), + }, + { + /* [363] */ + /* usage */ core::ParameterUsage::kHeight, + /* matcher_indices */ MatcherIndicesIndex(11), + }, + { + /* [364] */ + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(161), + }, + { + /* [365] */ + /* usage */ core::ParameterUsage::kSampler, + /* matcher_indices */ MatcherIndicesIndex(187), + }, + { + /* [366] */ /* usage */ core::ParameterUsage::kCoords, /* matcher_indices */ MatcherIndicesIndex(2), }, { - /* [358] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(20), - }, - { - /* [359] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(39), - }, - { - /* [360] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(54), - }, - { - /* [361] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(20), - }, - { - /* [362] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(28), - }, - { - /* [363] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(32), - }, - { - /* [364] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(4), - }, - { - /* [365] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(7), - }, - { - /* [366] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(60), - }, - { /* [367] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(7), + /* matcher_indices */ MatcherIndicesIndex(20), }, { /* [368] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(4), + /* matcher_indices */ MatcherIndicesIndex(39), }, { /* [369] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(4), + /* matcher_indices */ MatcherIndicesIndex(54), }, { /* [370] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(60), + /* matcher_indices */ MatcherIndicesIndex(20), }, { /* [371] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(60), + /* matcher_indices */ MatcherIndicesIndex(28), }, { /* [372] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(0), + /* matcher_indices */ MatcherIndicesIndex(32), }, { /* [373] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(4), + }, + { + /* [374] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(7), + }, + { + /* [375] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(60), + }, + { + /* [376] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(7), + }, + { + /* [377] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(4), + }, + { + /* [378] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(4), + }, + { + /* [379] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(60), + }, + { + /* [380] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(60), + }, + { + /* [381] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(0), + }, + { + /* [382] */ /* usage */ core::ParameterUsage::kOffset, /* matcher_indices */ MatcherIndicesIndex(7), }, { - /* [374] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(126), - }, - { - /* [375] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(14), - }, - { - /* [376] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(128), - }, - { - /* [377] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(130), - }, - { - /* [378] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(132), - }, - { - /* [379] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(118), - }, - { - /* [380] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(136), - }, - { - /* [381] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(118), - }, - { - /* [382] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(174), - }, - { /* [383] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(130), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(131), }, { /* [384] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(175), - }, - { - /* [385] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(118), - }, - { - /* [386] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(102), - }, - { - /* [387] */ /* usage */ core::ParameterUsage::kLocation, /* matcher_indices */ MatcherIndicesIndex(14), }, { - /* [388] */ + /* [385] */ /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(105), + /* matcher_indices */ MatcherIndicesIndex(133), + }, + { + /* [386] */ + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(135), + }, + { + /* [387] */ + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(137), + }, + { + /* [388] */ + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(119), }, { /* [389] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(130), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(141), }, { /* [390] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(108), + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(119), }, { /* [391] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(118), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(181), }, { /* [392] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(111), + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(135), }, { /* [393] */ - /* usage */ core::ParameterUsage::kLocation, - /* matcher_indices */ MatcherIndicesIndex(118), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(182), }, { /* [394] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(152), + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(119), }, { /* [395] */ - /* usage */ core::ParameterUsage::kWidth, - /* matcher_indices */ MatcherIndicesIndex(11), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(143), }, { /* [396] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(126), + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(65), }, { /* [397] */ - /* usage */ core::ParameterUsage::kWidth, - /* matcher_indices */ MatcherIndicesIndex(11), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(103), }, { /* [398] */ - /* usage */ core::ParameterUsage::kTexture, - /* matcher_indices */ MatcherIndicesIndex(102), + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(14), }, { /* [399] */ - /* usage */ core::ParameterUsage::kWidth, - /* matcher_indices */ MatcherIndicesIndex(11), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(106), }, { /* [400] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(2), + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(135), }, { /* [401] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(51), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(109), }, { /* [402] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(48), + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(119), }, { /* [403] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(116), + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(112), }, { /* [404] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(118), + /* usage */ core::ParameterUsage::kLocation, + /* matcher_indices */ MatcherIndicesIndex(119), }, { /* [405] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(170), + /* matcher_indices */ MatcherIndicesIndex(159), }, { /* [406] */ + /* usage */ core::ParameterUsage::kWidth, + /* matcher_indices */ MatcherIndicesIndex(11), + }, + { + /* [407] */ + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(131), + }, + { + /* [408] */ + /* usage */ core::ParameterUsage::kWidth, + /* matcher_indices */ MatcherIndicesIndex(11), + }, + { + /* [409] */ + /* usage */ core::ParameterUsage::kTexture, + /* matcher_indices */ MatcherIndicesIndex(103), + }, + { + /* [410] */ + /* usage */ core::ParameterUsage::kWidth, + /* matcher_indices */ MatcherIndicesIndex(11), + }, + { + /* [411] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(169), + /* matcher_indices */ MatcherIndicesIndex(2), + }, + { + /* [412] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(51), + }, + { + /* [413] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(48), + }, + { + /* [414] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(117), + }, + { + /* [415] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(119), + }, + { + /* [416] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(177), + }, + { + /* [417] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(176), }, }; @@ -3453,7 +3536,7 @@ { /* [0] */ /* name */ "T", - /* matcher_indices */ MatcherIndicesIndex(166), + /* matcher_indices */ MatcherIndicesIndex(173), /* kind */ TemplateInfo::Kind::kType, }, { @@ -3465,7 +3548,7 @@ { /* [2] */ /* name */ "T", - /* matcher_indices */ MatcherIndicesIndex(168), + /* matcher_indices */ MatcherIndicesIndex(175), /* kind */ TemplateInfo::Kind::kType, }, { @@ -3489,7 +3572,7 @@ { /* [6] */ /* name */ "T", - /* matcher_indices */ MatcherIndicesIndex(168), + /* matcher_indices */ MatcherIndicesIndex(175), /* kind */ TemplateInfo::Kind::kType, }, { @@ -3507,7 +3590,7 @@ { /* [9] */ /* name */ "T", - /* matcher_indices */ MatcherIndicesIndex(167), + /* matcher_indices */ MatcherIndicesIndex(174), /* kind */ TemplateInfo::Kind::kType, }, { @@ -3519,7 +3602,7 @@ { /* [11] */ /* name */ "T", - /* matcher_indices */ MatcherIndicesIndex(171), + /* matcher_indices */ MatcherIndicesIndex(178), /* kind */ TemplateInfo::Kind::kType, }, { @@ -3537,7 +3620,7 @@ { /* [14] */ /* name */ "T", - /* matcher_indices */ MatcherIndicesIndex(172), + /* matcher_indices */ MatcherIndicesIndex(179), /* kind */ TemplateInfo::Kind::kType, }, { @@ -3548,21 +3631,21 @@ }, { /* [16] */ - /* name */ "A", - /* matcher_indices */ MatcherIndicesIndex(1), - /* kind */ TemplateInfo::Kind::kNumber, + /* name */ "C", + /* matcher_indices */ MatcherIndicesIndex(18), + /* kind */ TemplateInfo::Kind::kType, }, { /* [17] */ /* name */ "F", - /* matcher_indices */ MatcherIndicesIndex(91), + /* matcher_indices */ MatcherIndicesIndex(92), /* kind */ TemplateInfo::Kind::kNumber, }, { /* [18] */ - /* name */ "A", - /* matcher_indices */ MatcherIndicesIndex(1), - /* kind */ TemplateInfo::Kind::kNumber, + /* name */ "C", + /* matcher_indices */ MatcherIndicesIndex(18), + /* kind */ TemplateInfo::Kind::kType, }, { /* [19] */ @@ -3572,32 +3655,62 @@ }, { /* [20] */ - /* name */ "A", - /* matcher_indices */ MatcherIndicesIndex(1), - /* kind */ TemplateInfo::Kind::kNumber, - }, - { - /* [21] */ - /* name */ "F", - /* matcher_indices */ MatcherIndicesIndex(/* invalid */), - /* kind */ TemplateInfo::Kind::kNumber, - }, - { - /* [22] */ - /* name */ "A", - /* matcher_indices */ MatcherIndicesIndex(/* invalid */), - /* kind */ TemplateInfo::Kind::kNumber, - }, - { - /* [23] */ /* name */ "C", /* matcher_indices */ MatcherIndicesIndex(18), /* kind */ TemplateInfo::Kind::kType, }, { + /* [21] */ + /* name */ "F", + /* matcher_indices */ MatcherIndicesIndex(64), + /* kind */ TemplateInfo::Kind::kNumber, + }, + { + /* [22] */ + /* name */ "A", + /* matcher_indices */ MatcherIndicesIndex(1), + /* kind */ TemplateInfo::Kind::kNumber, + }, + { + /* [23] */ + /* name */ "F", + /* matcher_indices */ MatcherIndicesIndex(92), + /* kind */ TemplateInfo::Kind::kNumber, + }, + { /* [24] */ + /* name */ "A", + /* matcher_indices */ MatcherIndicesIndex(1), + /* kind */ TemplateInfo::Kind::kNumber, + }, + { + /* [25] */ + /* name */ "F", + /* matcher_indices */ MatcherIndicesIndex(36), + /* kind */ TemplateInfo::Kind::kNumber, + }, + { + /* [26] */ + /* name */ "A", + /* matcher_indices */ MatcherIndicesIndex(1), + /* kind */ TemplateInfo::Kind::kNumber, + }, + { + /* [27] */ + /* name */ "F", + /* matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* kind */ TemplateInfo::Kind::kNumber, + }, + { + /* [28] */ + /* name */ "A", + /* matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* kind */ TemplateInfo::Kind::kNumber, + }, + { + /* [29] */ /* name */ "T", - /* matcher_indices */ MatcherIndicesIndex(173), + /* matcher_indices */ MatcherIndicesIndex(180), /* kind */ TemplateInfo::Kind::kType, }, }; @@ -3612,8 +3725,8 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(22), - /* parameters */ ParameterIndex(394), + /* templates */ TemplateIndex(28), + /* parameters */ ParameterIndex(405), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -3623,8 +3736,8 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(396), + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(407), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -3634,7 +3747,7 @@ /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), + /* templates */ TemplateIndex(29), /* parameters */ ParameterIndex(175), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3645,8 +3758,8 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(21), - /* parameters */ ParameterIndex(398), + /* templates */ TemplateIndex(27), + /* parameters */ ParameterIndex(409), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -3656,8 +3769,8 @@ /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(340), + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(349), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -3667,7 +3780,7 @@ /* num_parameters */ 5, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), + /* templates */ TemplateIndex(29), /* parameters */ ParameterIndex(63), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3678,8 +3791,8 @@ /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(21), - /* parameters */ ParameterIndex(343), + /* templates */ TemplateIndex(27), + /* parameters */ ParameterIndex(352), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -3689,7 +3802,7 @@ /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), + /* templates */ TemplateIndex(29), /* parameters */ ParameterIndex(179), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3700,7 +3813,7 @@ /* num_parameters */ 6, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), + /* templates */ TemplateIndex(29), /* parameters */ ParameterIndex(0), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3711,7 +3824,7 @@ /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(21), + /* templates */ TemplateIndex(27), /* parameters */ ParameterIndex(183), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3722,7 +3835,7 @@ /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), + /* templates */ TemplateIndex(29), /* parameters */ ParameterIndex(187), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3733,7 +3846,7 @@ /* num_parameters */ 6, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), + /* templates */ TemplateIndex(29), /* parameters */ ParameterIndex(6), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3744,7 +3857,7 @@ /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(21), + /* templates */ TemplateIndex(27), /* parameters */ ParameterIndex(191), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3755,8 +3868,8 @@ /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(346), + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(355), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -3766,7 +3879,7 @@ /* num_parameters */ 5, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), + /* templates */ TemplateIndex(29), /* parameters */ ParameterIndex(68), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3777,7 +3890,7 @@ /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), + /* templates */ TemplateIndex(29), /* parameters */ ParameterIndex(195), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3788,7 +3901,7 @@ /* num_parameters */ 6, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), + /* templates */ TemplateIndex(29), /* parameters */ ParameterIndex(12), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3799,7 +3912,7 @@ /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), + /* templates */ TemplateIndex(29), /* parameters */ ParameterIndex(199), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), @@ -3811,7 +3924,7 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(349), + /* parameters */ ParameterIndex(358), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -3855,7 +3968,7 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(352), + /* parameters */ ParameterIndex(361), /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -3910,7 +4023,7 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(372), + /* parameters */ ParameterIndex(381), /* return_matcher_indices */ MatcherIndicesIndex(7), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -3920,9 +4033,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(374), - /* return_matcher_indices */ MatcherIndicesIndex(124), + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(383), + /* return_matcher_indices */ MatcherIndicesIndex(129), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -3931,9 +4044,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(376), - /* return_matcher_indices */ MatcherIndicesIndex(124), + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(385), + /* return_matcher_indices */ MatcherIndicesIndex(129), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -3942,9 +4055,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(378), - /* return_matcher_indices */ MatcherIndicesIndex(124), + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(387), + /* return_matcher_indices */ MatcherIndicesIndex(129), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -3953,9 +4066,9 @@ /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(304), - /* return_matcher_indices */ MatcherIndicesIndex(124), + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(313), + /* return_matcher_indices */ MatcherIndicesIndex(129), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -3964,9 +4077,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(380), - /* return_matcher_indices */ MatcherIndicesIndex(124), + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(389), + /* return_matcher_indices */ MatcherIndicesIndex(129), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -3976,8 +4089,8 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(382), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(391), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -3987,8 +4100,8 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(384), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(393), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -3998,8 +4111,8 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(307), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(316), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4009,8 +4122,8 @@ /* num_explicit_templates */ 0, /* num_templates */ 2, /* templates */ TemplateIndex(15), - /* parameters */ ParameterIndex(386), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(395), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4019,9 +4132,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(15), - /* parameters */ ParameterIndex(388), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* templates */ TemplateIndex(17), + /* parameters */ ParameterIndex(395), + /* return_matcher_indices */ MatcherIndicesIndex(117), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4030,9 +4143,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(15), - /* parameters */ ParameterIndex(390), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* templates */ TemplateIndex(19), + /* parameters */ ParameterIndex(395), + /* return_matcher_indices */ MatcherIndicesIndex(119), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4041,9 +4154,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(15), - /* parameters */ ParameterIndex(392), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* templates */ TemplateIndex(21), + /* parameters */ ParameterIndex(397), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4052,9 +4165,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(17), - /* parameters */ ParameterIndex(386), - /* return_matcher_indices */ MatcherIndicesIndex(116), + /* templates */ TemplateIndex(21), + /* parameters */ ParameterIndex(399), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4063,9 +4176,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(17), - /* parameters */ ParameterIndex(388), - /* return_matcher_indices */ MatcherIndicesIndex(116), + /* templates */ TemplateIndex(21), + /* parameters */ ParameterIndex(401), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4074,9 +4187,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(17), - /* parameters */ ParameterIndex(390), - /* return_matcher_indices */ MatcherIndicesIndex(116), + /* templates */ TemplateIndex(21), + /* parameters */ ParameterIndex(403), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4085,9 +4198,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(17), - /* parameters */ ParameterIndex(392), - /* return_matcher_indices */ MatcherIndicesIndex(116), + /* templates */ TemplateIndex(23), + /* parameters */ ParameterIndex(397), + /* return_matcher_indices */ MatcherIndicesIndex(117), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4096,9 +4209,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(19), - /* parameters */ ParameterIndex(386), - /* return_matcher_indices */ MatcherIndicesIndex(118), + /* templates */ TemplateIndex(23), + /* parameters */ ParameterIndex(399), + /* return_matcher_indices */ MatcherIndicesIndex(117), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4107,9 +4220,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(19), - /* parameters */ ParameterIndex(388), - /* return_matcher_indices */ MatcherIndicesIndex(118), + /* templates */ TemplateIndex(23), + /* parameters */ ParameterIndex(401), + /* return_matcher_indices */ MatcherIndicesIndex(117), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4118,9 +4231,9 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(19), - /* parameters */ ParameterIndex(390), - /* return_matcher_indices */ MatcherIndicesIndex(118), + /* templates */ TemplateIndex(23), + /* parameters */ ParameterIndex(403), + /* return_matcher_indices */ MatcherIndicesIndex(117), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4129,251 +4242,251 @@ /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, - /* templates */ TemplateIndex(19), - /* parameters */ ParameterIndex(392), - /* return_matcher_indices */ MatcherIndicesIndex(118), + /* templates */ TemplateIndex(25), + /* parameters */ ParameterIndex(397), + /* return_matcher_indices */ MatcherIndicesIndex(119), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [48] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, + /* num_parameters */ 2, /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(355), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* num_templates */ 2, + /* templates */ TemplateIndex(25), + /* parameters */ ParameterIndex(399), + /* return_matcher_indices */ MatcherIndicesIndex(119), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [49] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 2, + /* num_explicit_templates */ 0, + /* num_templates */ 2, + /* templates */ TemplateIndex(25), + /* parameters */ ParameterIndex(401), + /* return_matcher_indices */ MatcherIndicesIndex(119), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [50] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 2, + /* num_explicit_templates */ 0, + /* num_templates */ 2, + /* templates */ TemplateIndex(25), + /* parameters */ ParameterIndex(403), + /* return_matcher_indices */ MatcherIndicesIndex(119), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [51] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(268), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [52] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(271), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [53] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(274), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [54] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(277), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [55] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(280), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [56] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(283), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [57] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(286), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [58] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(289), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [59] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(292), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [60] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(295), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [61] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(298), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [62] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(301), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [63] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(304), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [64] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(307), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [65] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(16), + /* parameters */ ParameterIndex(310), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [66] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(364), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [67] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), /* parameters */ ParameterIndex(30), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [50] */ + /* [68] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), /* parameters */ ParameterIndex(215), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [51] */ + /* [69] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), /* parameters */ ParameterIndex(36), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [52] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(219), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [53] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(42), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [54] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(223), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [55] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(108), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [56] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(113), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [57] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(133), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [58] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(159), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [59] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(138), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [60] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(163), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [61] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(251), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [62] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(255), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [63] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(118), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [64] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(118), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [65] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(123), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [66] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(123), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [67] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(128), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [68] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(128), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [69] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(243), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4383,63 +4496,63 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(247), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(219), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [71] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, + /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(133), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(42), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [72] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, + /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(133), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(223), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [73] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, + /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(138), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(108), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [74] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, + /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(138), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(113), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [75] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, + /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(251), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(133), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4449,140 +4562,140 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(255), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(159), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [77] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 3, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(268), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(138), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [78] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(271), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(163), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [79] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 3, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(274), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(251), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [80] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 3, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(277), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(255), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [81] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(280), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(118), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [82] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 5, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(283), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(118), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [83] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(286), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(123), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [84] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 5, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(289), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(123), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [85] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(292), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(128), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [86] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 5, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(295), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(128), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [87] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(298), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(243), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [88] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(23), - /* parameters */ ParameterIndex(301), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(247), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4592,8 +4705,8 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(83), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(133), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4603,8 +4716,8 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(83), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(133), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4614,8 +4727,8 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(88), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(138), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4625,8 +4738,8 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(88), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(138), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4636,19 +4749,19 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(93), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(251), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [94] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, + /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(93), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(255), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4658,85 +4771,85 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(227), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(83), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [96] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 5, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(83), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [97] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(88), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [98] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 5, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(88), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [99] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(93), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [100] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 5, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(93), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [101] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(227), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [102] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), /* parameters */ ParameterIndex(231), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [97] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(30), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [98] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 6, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(30), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [99] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(36), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [100] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 6, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(36), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [101] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(42), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [102] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 6, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(42), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -4746,167 +4859,233 @@ /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(108), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* parameters */ ParameterIndex(30), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [104] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 6, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(30), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [105] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 5, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(36), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [106] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 6, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(36), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [107] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 5, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(42), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [108] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 6, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(42), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [109] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 5, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(108), + /* return_matcher_indices */ MatcherIndicesIndex(124), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [110] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 5, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), /* parameters */ ParameterIndex(113), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [105] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(53), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [106] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(53), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [107] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(58), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [108] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 5, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(58), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [109] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(151), - /* return_matcher_indices */ MatcherIndicesIndex(120), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [110] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(155), - /* return_matcher_indices */ MatcherIndicesIndex(120), + /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [111] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, + /* num_parameters */ 4, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(167), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(53), /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [112] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, + /* num_parameters */ 5, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(167), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(53), /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [113] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, + /* num_parameters */ 4, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(171), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(58), /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [114] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, + /* num_parameters */ 5, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(171), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(58), /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [115] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, + /* num_parameters */ 4, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(334), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(151), /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [116] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, + /* num_parameters */ 4, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(24), - /* parameters */ ParameterIndex(337), + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(155), /* return_matcher_indices */ MatcherIndicesIndex(124), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [117] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 4, + /* num_parameters */ 3, /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(98), - /* return_matcher_indices */ MatcherIndicesIndex(2), + /* num_templates */ 1, + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(167), + /* return_matcher_indices */ MatcherIndicesIndex(129), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [118] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(167), + /* return_matcher_indices */ MatcherIndicesIndex(129), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [119] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(171), + /* return_matcher_indices */ MatcherIndicesIndex(129), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [120] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(171), + /* return_matcher_indices */ MatcherIndicesIndex(129), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [121] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(343), + /* return_matcher_indices */ MatcherIndicesIndex(129), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [122] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(29), + /* parameters */ ParameterIndex(346), + /* return_matcher_indices */ MatcherIndicesIndex(129), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [123] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 4, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(98), + /* return_matcher_indices */ MatcherIndicesIndex(2), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [124] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 5, /* num_explicit_templates */ 0, /* num_templates */ 0, @@ -4916,7 +5095,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [119] */ + /* [125] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 4, /* num_explicit_templates */ 0, @@ -4927,7 +5106,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [120] */ + /* [126] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 5, /* num_explicit_templates */ 0, @@ -4938,7 +5117,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [121] */ + /* [127] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 4, /* num_explicit_templates */ 0, @@ -4949,7 +5128,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [122] */ + /* [128] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 4, /* num_explicit_templates */ 0, @@ -4960,102 +5139,36 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [123] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(6), - /* parameters */ ParameterIndex(358), - /* return_matcher_indices */ MatcherIndicesIndex(54), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [124] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(6), - /* parameters */ ParameterIndex(360), - /* return_matcher_indices */ MatcherIndicesIndex(39), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [125] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 4, - /* templates */ TemplateIndex(2), - /* parameters */ ParameterIndex(362), - /* return_matcher_indices */ MatcherIndicesIndex(24), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [126] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 1, - /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(0), - /* parameters */ ParameterIndex(364), - /* return_matcher_indices */ MatcherIndicesIndex(8), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [127] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 1, - /* num_explicit_templates */ 0, - /* num_templates */ 2, - /* templates */ TemplateIndex(0), - /* parameters */ ParameterIndex(359), - /* return_matcher_indices */ MatcherIndicesIndex(36), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [128] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 1, - /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(9), - /* parameters */ ParameterIndex(364), - /* return_matcher_indices */ MatcherIndicesIndex(7), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { /* [129] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 1, + /* num_parameters */ 2, /* num_explicit_templates */ 0, - /* num_templates */ 2, - /* templates */ TemplateIndex(9), - /* parameters */ ParameterIndex(359), - /* return_matcher_indices */ MatcherIndicesIndex(42), + /* num_templates */ 3, + /* templates */ TemplateIndex(6), + /* parameters */ ParameterIndex(367), + /* return_matcher_indices */ MatcherIndicesIndex(54), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [130] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 1, + /* num_parameters */ 2, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(12), - /* parameters */ ParameterIndex(364), - /* return_matcher_indices */ MatcherIndicesIndex(2), + /* num_templates */ 3, + /* templates */ TemplateIndex(6), + /* parameters */ ParameterIndex(369), + /* return_matcher_indices */ MatcherIndicesIndex(39), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [131] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 1, + /* num_parameters */ 2, /* num_explicit_templates */ 0, - /* num_templates */ 2, - /* templates */ TemplateIndex(12), - /* parameters */ ParameterIndex(359), - /* return_matcher_indices */ MatcherIndicesIndex(45), + /* num_templates */ 4, + /* templates */ TemplateIndex(2), + /* parameters */ ParameterIndex(371), + /* return_matcher_indices */ MatcherIndicesIndex(24), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -5063,10 +5176,10 @@ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(400), - /* return_matcher_indices */ MatcherIndicesIndex(7), + /* num_templates */ 1, + /* templates */ TemplateIndex(0), + /* parameters */ ParameterIndex(373), + /* return_matcher_indices */ MatcherIndicesIndex(8), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -5074,10 +5187,10 @@ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, - /* num_templates */ 1, - /* templates */ TemplateIndex(1), - /* parameters */ ParameterIndex(401), - /* return_matcher_indices */ MatcherIndicesIndex(48), + /* num_templates */ 2, + /* templates */ TemplateIndex(0), + /* parameters */ ParameterIndex(368), + /* return_matcher_indices */ MatcherIndicesIndex(36), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -5085,6 +5198,72 @@ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(9), + /* parameters */ ParameterIndex(373), + /* return_matcher_indices */ MatcherIndicesIndex(7), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [135] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 1, + /* num_explicit_templates */ 0, + /* num_templates */ 2, + /* templates */ TemplateIndex(9), + /* parameters */ ParameterIndex(368), + /* return_matcher_indices */ MatcherIndicesIndex(42), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [136] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 1, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(12), + /* parameters */ ParameterIndex(373), + /* return_matcher_indices */ MatcherIndicesIndex(2), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [137] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 1, + /* num_explicit_templates */ 0, + /* num_templates */ 2, + /* templates */ TemplateIndex(12), + /* parameters */ ParameterIndex(368), + /* return_matcher_indices */ MatcherIndicesIndex(45), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [138] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 1, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(411), + /* return_matcher_indices */ MatcherIndicesIndex(7), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [139] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 1, + /* num_explicit_templates */ 0, + /* num_templates */ 1, + /* templates */ TemplateIndex(1), + /* parameters */ ParameterIndex(412), + /* return_matcher_indices */ MatcherIndicesIndex(48), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [140] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 1, + /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), /* parameters */ ParameterIndex(259), @@ -5092,18 +5271,18 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [135] */ + /* [141] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, /* num_templates */ 1, /* templates */ TemplateIndex(1), - /* parameters */ ParameterIndex(402), + /* parameters */ ParameterIndex(413), /* return_matcher_indices */ MatcherIndicesIndex(51), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [136] */ + /* [142] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 4, /* num_explicit_templates */ 0, @@ -5114,7 +5293,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [137] */ + /* [143] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 5, /* num_explicit_templates */ 0, @@ -5125,7 +5304,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [138] */ + /* [144] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 3, /* num_explicit_templates */ 0, @@ -5136,7 +5315,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [139] */ + /* [145] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 4, /* num_explicit_templates */ 0, @@ -5147,73 +5326,73 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [140] */ + /* [146] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, /* num_templates */ 1, /* templates */ TemplateIndex(11), - /* parameters */ ParameterIndex(364), + /* parameters */ ParameterIndex(373), /* return_matcher_indices */ MatcherIndicesIndex(8), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [141] */ + /* [147] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, /* num_templates */ 2, /* templates */ TemplateIndex(10), - /* parameters */ ParameterIndex(366), + /* parameters */ ParameterIndex(375), /* return_matcher_indices */ MatcherIndicesIndex(57), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [142] */ + /* [148] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 1, /* templates */ TemplateIndex(14), - /* parameters */ ParameterIndex(364), + /* parameters */ ParameterIndex(373), /* return_matcher_indices */ MatcherIndicesIndex(4), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [143] */ + /* [149] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, /* templates */ TemplateIndex(13), - /* parameters */ ParameterIndex(366), + /* parameters */ ParameterIndex(375), /* return_matcher_indices */ MatcherIndicesIndex(60), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [144] */ + /* [150] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 1, /* templates */ TemplateIndex(2), - /* parameters */ ParameterIndex(368), + /* parameters */ ParameterIndex(377), /* return_matcher_indices */ MatcherIndicesIndex(4), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [145] */ + /* [151] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, /* templates */ TemplateIndex(1), - /* parameters */ ParameterIndex(370), + /* parameters */ ParameterIndex(379), /* return_matcher_indices */ MatcherIndicesIndex(60), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [146] */ + /* [152] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 3, /* num_explicit_templates */ 0, @@ -5224,7 +5403,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [147] */ + /* [153] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 3, /* num_explicit_templates */ 0, @@ -5235,51 +5414,51 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [148] */ + /* [154] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(403), - /* return_matcher_indices */ MatcherIndicesIndex(169), + /* parameters */ ParameterIndex(414), + /* return_matcher_indices */ MatcherIndicesIndex(176), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [149] */ + /* [155] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(404), - /* return_matcher_indices */ MatcherIndicesIndex(170), + /* parameters */ ParameterIndex(415), + /* return_matcher_indices */ MatcherIndicesIndex(177), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [150] */ + /* [156] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(405), - /* return_matcher_indices */ MatcherIndicesIndex(118), + /* parameters */ ParameterIndex(416), + /* return_matcher_indices */ MatcherIndicesIndex(119), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [151] */ + /* [157] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(406), - /* return_matcher_indices */ MatcherIndicesIndex(116), + /* parameters */ ParameterIndex(417), + /* return_matcher_indices */ MatcherIndicesIndex(117), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [152] */ + /* [158] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 0, /* num_explicit_templates */ 0, @@ -5290,118 +5469,85 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [153] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(372), - /* return_matcher_indices */ MatcherIndicesIndex(65), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [154] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(372), - /* return_matcher_indices */ MatcherIndicesIndex(138), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [155] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(372), - /* return_matcher_indices */ MatcherIndicesIndex(116), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [156] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(372), - /* return_matcher_indices */ MatcherIndicesIndex(5), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [157] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(372), - /* return_matcher_indices */ MatcherIndicesIndex(69), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [158] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(372), - /* return_matcher_indices */ MatcherIndicesIndex(140), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { /* [159] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(372), - /* return_matcher_indices */ MatcherIndicesIndex(142), + /* parameters */ ParameterIndex(381), + /* return_matcher_indices */ MatcherIndicesIndex(69), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [160] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, + /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(310), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* parameters */ ParameterIndex(381), + /* return_matcher_indices */ MatcherIndicesIndex(145), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [161] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, + /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(313), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* parameters */ ParameterIndex(381), + /* return_matcher_indices */ MatcherIndicesIndex(117), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [162] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), - /* num_parameters */ 3, + /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(316), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* parameters */ ParameterIndex(381), + /* return_matcher_indices */ MatcherIndicesIndex(5), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [163] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 2, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(381), + /* return_matcher_indices */ MatcherIndicesIndex(73), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [164] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 2, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(381), + /* return_matcher_indices */ MatcherIndicesIndex(147), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [165] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 2, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(381), + /* return_matcher_indices */ MatcherIndicesIndex(149), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [166] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 0, @@ -5411,7 +5557,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [164] */ + /* [167] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 3, /* num_explicit_templates */ 0, @@ -5422,7 +5568,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [165] */ + /* [168] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 3, /* num_explicit_templates */ 0, @@ -5433,7 +5579,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [166] */ + /* [169] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 3, /* num_explicit_templates */ 0, @@ -5444,7 +5590,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [167] */ + /* [170] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), /* num_parameters */ 3, /* num_explicit_templates */ 0, @@ -5454,6 +5600,39 @@ /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, + { + /* [171] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(334), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [172] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(337), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [173] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 0, + /* templates */ TemplateIndex(/* invalid */), + /* parameters */ ParameterIndex(340), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, }; static_assert(OverloadIndex::CanIndex(kOverloads), @@ -5465,103 +5644,103 @@ /* fn asint[T : f32_u32](T) -> i32 */ /* fn asint[T : f32_u32, N : num](vec<N, T>) -> vec<N, i32> */ /* num overloads */ 2, - /* overloads */ OverloadIndex(126), + /* overloads */ OverloadIndex(132), }, { /* [1] */ /* fn asuint[T : f32_i32](T) -> u32 */ /* fn asuint[T : f32_i32, N : num](vec<N, T>) -> vec<N, u32> */ /* num overloads */ 2, - /* overloads */ OverloadIndex(128), + /* overloads */ OverloadIndex(134), }, { /* [2] */ /* fn asfloat[T : iu32](T) -> f32 */ /* fn asfloat[T : iu32, N : num](vec<N, T>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ OverloadIndex(130), + /* overloads */ OverloadIndex(136), }, { /* [3] */ /* fn dot4add_i8packed(u32, u32, ptr<function, i32, writable>) -> i32 */ /* num overloads */ 1, - /* overloads */ OverloadIndex(146), + /* overloads */ OverloadIndex(152), }, { /* [4] */ /* fn dot4add_u8packed(u32, u32, ptr<function, u32, writable>) -> u32 */ /* num overloads */ 1, - /* overloads */ OverloadIndex(147), + /* overloads */ OverloadIndex(153), }, { /* [5] */ /* fn f32tof16(f32) -> u32 */ /* fn f32tof16[N : num](vec<N, f32>) -> vec<N, u32> */ /* num overloads */ 2, - /* overloads */ OverloadIndex(132), + /* overloads */ OverloadIndex(138), }, { /* [6] */ /* fn f16tof32(u32) -> f32 */ /* fn f16tof32[N : num](vec<N, u32>) -> vec<N, f32> */ /* num overloads */ 2, - /* overloads */ OverloadIndex(134), + /* overloads */ OverloadIndex(140), }, { /* [7] */ /* fn InterlockedCompareExchange[T : iu32](ptr<workgroup, atomic<T>, read_write>, compare_value: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* fn InterlockedCompareExchange(byte_address_buffer<read_write>, offset: iu32, compare_value: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* num overloads */ 2, - /* overloads */ OverloadIndex(136), + /* overloads */ OverloadIndex(142), }, { /* [8] */ /* fn InterlockedExchange[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* fn InterlockedExchange(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* num overloads */ 2, - /* overloads */ OverloadIndex(138), + /* overloads */ OverloadIndex(144), }, { /* [9] */ /* fn InterlockedAdd[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* fn InterlockedAdd(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* num overloads */ 2, - /* overloads */ OverloadIndex(138), + /* overloads */ OverloadIndex(144), }, { /* [10] */ /* fn InterlockedMax[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* fn InterlockedMax(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* num overloads */ 2, - /* overloads */ OverloadIndex(138), + /* overloads */ OverloadIndex(144), }, { /* [11] */ /* fn InterlockedMin[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* fn InterlockedMin(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* num overloads */ 2, - /* overloads */ OverloadIndex(138), + /* overloads */ OverloadIndex(144), }, { /* [12] */ /* fn InterlockedAnd[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* fn InterlockedAnd(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* num overloads */ 2, - /* overloads */ OverloadIndex(138), + /* overloads */ OverloadIndex(144), }, { /* [13] */ /* fn InterlockedOr[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* fn InterlockedOr(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* num overloads */ 2, - /* overloads */ OverloadIndex(138), + /* overloads */ OverloadIndex(144), }, { /* [14] */ /* fn InterlockedXor[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* fn InterlockedXor(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */ /* num overloads */ 2, - /* overloads */ OverloadIndex(138), + /* overloads */ OverloadIndex(144), }, { /* [15] */ @@ -5569,35 +5748,38 @@ /* fn mul[T : f32_f16, C : num, R : num](vec<R, T>, mat<R, C, T>) -> vec<C, T> */ /* fn mul[T : f32_f16, K : num, C : num, R : num](mat<R, K, T>, mat<K, C, T>) -> mat<R, C, T> */ /* num overloads */ 3, - /* overloads */ OverloadIndex(123), + /* overloads */ OverloadIndex(129), }, { /* [16] */ /* fn pack_u8(vec4<u32>) -> uint8_t4_packed */ /* num overloads */ 1, - /* overloads */ OverloadIndex(148), + /* overloads */ OverloadIndex(154), }, { /* [17] */ /* fn pack_s8(vec4<i32>) -> int8_t4_packed */ /* num overloads */ 1, - /* overloads */ OverloadIndex(149), + /* overloads */ OverloadIndex(155), }, { /* [18] */ /* fn pack_clamp_s8(vec4<i32>) -> int8_t4_packed */ /* num overloads */ 1, - /* overloads */ OverloadIndex(149), + /* overloads */ OverloadIndex(155), }, { /* [19] */ /* fn sign[T : fi32_f16](T) -> i32 */ /* fn sign[N : num, T : fi32_f16](vec<N, T>) -> vec<N, i32> */ /* num overloads */ 2, - /* overloads */ OverloadIndex(140), + /* overloads */ OverloadIndex(146), }, { /* [20] */ + /* fn textureStore[C : iu32](texture: rasterizer_ordered_texture_2d<f32_texel_format>, coords: vec2<C>, value: vec4<f32>) */ + /* fn textureStore[C : iu32](texture: rasterizer_ordered_texture_2d<i32_texel_format>, coords: vec2<C>, value: vec4<i32>) */ + /* fn textureStore[C : iu32](texture: rasterizer_ordered_texture_2d<u32_texel_format>, coords: vec2<C>, value: vec4<u32>) */ /* fn textureStore[C : iu32](texture: texture_storage_1d<f32_texel_format, writable>, coords: C, value: vec4<f32>) */ /* fn textureStore[C : iu32](texture: texture_storage_2d<f32_texel_format, writable>, coords: vec2<C>, value: vec4<f32>) */ /* fn textureStore[C : iu32](texture: texture_storage_2d_array<f32_texel_format, writable>, coords: vec3<C>, value: vec4<f32>) */ @@ -5610,53 +5792,53 @@ /* fn textureStore[C : iu32](texture: texture_storage_2d<u32_texel_format, writable>, coords: vec2<C>, value: vec4<u32>) */ /* fn textureStore[C : iu32](texture: texture_storage_2d_array<u32_texel_format, writable>, coords: vec3<C>, value: vec4<u32>) */ /* fn textureStore[C : iu32](texture: texture_storage_3d<u32_texel_format, writable>, coords: vec3<C>, value: vec4<u32>) */ - /* num overloads */ 12, - /* overloads */ OverloadIndex(77), + /* num overloads */ 15, + /* overloads */ OverloadIndex(51), }, { /* [21] */ /* fn unpack_s8s32(int8_t4_packed) -> vec4<i32> */ /* num overloads */ 1, - /* overloads */ OverloadIndex(150), + /* overloads */ OverloadIndex(156), }, { /* [22] */ /* fn unpack_u8u32(uint8_t4_packed) -> vec4<u32> */ /* num overloads */ 1, - /* overloads */ OverloadIndex(151), + /* overloads */ OverloadIndex(157), }, { /* [23] */ /* fn WaveGetLaneIndex() -> u32 */ /* num overloads */ 1, - /* overloads */ OverloadIndex(152), + /* overloads */ OverloadIndex(158), }, { /* [24] */ /* fn WaveGetLaneCount() -> u32 */ /* num overloads */ 1, - /* overloads */ OverloadIndex(152), + /* overloads */ OverloadIndex(158), }, { /* [25] */ /* fn WaveReadLaneAt[T : fiu32_f16](T, u32) -> T */ /* fn WaveReadLaneAt[N : num, T : fiu32_f16](vec<N, T>, u32) -> vec<N, T> */ /* num overloads */ 2, - /* overloads */ OverloadIndex(142), + /* overloads */ OverloadIndex(148), }, { /* [26] */ /* fn modf[T : f32_f16](T, T) -> T */ /* fn modf[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> vec<N, T> */ /* num overloads */ 2, - /* overloads */ OverloadIndex(144), + /* overloads */ OverloadIndex(150), }, { /* [27] */ /* fn frexp[T : f32_f16](T, T) -> T */ /* fn frexp[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> vec<N, T> */ /* num overloads */ 2, - /* overloads */ OverloadIndex(144), + /* overloads */ OverloadIndex(150), }, { /* [28] */ @@ -5669,6 +5851,9 @@ /* fn Load(texture: texture_depth_2d, location: vec3<i32>) -> vec4<f32> */ /* fn Load(texture: texture_depth_2d_array, location: vec4<i32>) -> vec4<f32> */ /* fn Load(texture: texture_depth_multisampled_2d, location: vec2<i32>, sample_index: i32) -> vec4<f32> */ + /* fn Load[F : f32_texel_format, C : iu32](texture: rasterizer_ordered_texture_2d<F>, location: vec2<C>) -> vec4<f32> */ + /* fn Load[F : u32_texel_format, C : iu32](texture: rasterizer_ordered_texture_2d<F>, location: vec2<C>) -> vec4<u32> */ + /* fn Load[F : i32_texel_format, C : iu32](texture: rasterizer_ordered_texture_2d<F>, location: vec2<C>) -> vec4<i32> */ /* fn Load[F : f32_texel_format, A : readable](texture: texture_storage_1d<F, A>, location: vec2<i32>) -> vec4<f32> */ /* fn Load[F : f32_texel_format, A : readable](texture: texture_storage_2d<F, A>, location: vec3<i32>) -> vec4<f32> */ /* fn Load[F : f32_texel_format, A : readable](texture: texture_storage_2d_array<F, A>, location: vec4<i32>) -> vec4<f32> */ @@ -5681,98 +5866,98 @@ /* fn Load[F : i32_texel_format, A : readable](texture: texture_storage_2d<F, A>, location: vec3<i32>) -> vec4<i32> */ /* fn Load[F : i32_texel_format, A : readable](texture: texture_storage_2d_array<F, A>, location: vec4<i32>) -> vec4<i32> */ /* fn Load[F : i32_texel_format, A : readable](texture: texture_storage_3d<F, A>, location: vec4<i32>) -> vec4<i32> */ - /* num overloads */ 21, + /* num overloads */ 24, /* overloads */ OverloadIndex(27), }, { /* [29] */ /* fn Load2(byte_address_buffer<readable>, offset: u32) -> vec2<u32> */ /* num overloads */ 1, - /* overloads */ OverloadIndex(153), + /* overloads */ OverloadIndex(159), }, { /* [30] */ /* fn Load3(byte_address_buffer<readable>, offset: u32) -> vec3<u32> */ /* num overloads */ 1, - /* overloads */ OverloadIndex(154), + /* overloads */ OverloadIndex(160), }, { /* [31] */ /* fn Load4(byte_address_buffer<readable>, offset: u32) -> vec4<u32> */ /* num overloads */ 1, - /* overloads */ OverloadIndex(155), + /* overloads */ OverloadIndex(161), }, { /* [32] */ /* fn LoadF16(byte_address_buffer<readable>, offset: u32) -> f16 */ /* num overloads */ 1, - /* overloads */ OverloadIndex(156), + /* overloads */ OverloadIndex(162), }, { /* [33] */ /* fn Load2F16(byte_address_buffer<readable>, offset: u32) -> vec2<f16> */ /* num overloads */ 1, - /* overloads */ OverloadIndex(157), + /* overloads */ OverloadIndex(163), }, { /* [34] */ /* fn Load3F16(byte_address_buffer<readable>, offset: u32) -> vec3<f16> */ /* num overloads */ 1, - /* overloads */ OverloadIndex(158), + /* overloads */ OverloadIndex(164), }, { /* [35] */ /* fn Load4F16(byte_address_buffer<readable>, offset: u32) -> vec4<f16> */ /* num overloads */ 1, - /* overloads */ OverloadIndex(159), + /* overloads */ OverloadIndex(165), }, { /* [36] */ /* fn Store(byte_address_buffer<writable>, offset: u32, value: u32) */ /* num overloads */ 1, - /* overloads */ OverloadIndex(160), + /* overloads */ OverloadIndex(166), }, { /* [37] */ /* fn Store2(byte_address_buffer<writable>, offset: u32, value: vec2<u32>) */ /* num overloads */ 1, - /* overloads */ OverloadIndex(161), + /* overloads */ OverloadIndex(167), }, { /* [38] */ /* fn Store3(byte_address_buffer<writable>, offset: u32, value: vec3<u32>) */ /* num overloads */ 1, - /* overloads */ OverloadIndex(162), + /* overloads */ OverloadIndex(168), }, { /* [39] */ /* fn Store4(byte_address_buffer<writable>, offset: u32, value: vec4<u32>) */ /* num overloads */ 1, - /* overloads */ OverloadIndex(163), + /* overloads */ OverloadIndex(169), }, { /* [40] */ /* fn StoreF16(byte_address_buffer<writable>, offset: u32, value: f16) */ /* num overloads */ 1, - /* overloads */ OverloadIndex(164), + /* overloads */ OverloadIndex(170), }, { /* [41] */ /* fn Store2F16(byte_address_buffer<writable>, offset: u32, value: vec2<f16>) */ /* num overloads */ 1, - /* overloads */ OverloadIndex(165), + /* overloads */ OverloadIndex(171), }, { /* [42] */ /* fn Store3F16(byte_address_buffer<writable>, offset: u32, value: vec3<f16>) */ /* num overloads */ 1, - /* overloads */ OverloadIndex(166), + /* overloads */ OverloadIndex(172), }, { /* [43] */ /* fn Store4F16(byte_address_buffer<writable>, offset: u32, value: vec4<f16>) */ /* num overloads */ 1, - /* overloads */ OverloadIndex(167), + /* overloads */ OverloadIndex(173), }, { /* [44] */ @@ -5783,7 +5968,7 @@ /* fn GatherCmp(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> vec4<f32> */ /* fn GatherCmp(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec4<f32>, depth_ref: f32) -> vec4<f32> */ /* num overloads */ 6, - /* overloads */ OverloadIndex(105), + /* overloads */ OverloadIndex(111), }, { /* [45] */ @@ -5794,7 +5979,7 @@ /* fn Gather(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */ /* fn Gather(texture: texture_depth_cube_array, sampler: sampler, coords: vec4<f32>) -> vec4<f32> */ /* num overloads */ 6, - /* overloads */ OverloadIndex(57), + /* overloads */ OverloadIndex(75), }, { /* [46] */ @@ -5805,7 +5990,7 @@ /* fn GatherAlpha[T : fiu32](texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */ /* fn GatherAlpha[T : fiu32](texture: texture_cube_array<T>, sampler: sampler, coords: vec4<f32>) -> vec4<T> */ /* num overloads */ 6, - /* overloads */ OverloadIndex(111), + /* overloads */ OverloadIndex(117), }, { /* [47] */ @@ -5816,7 +6001,7 @@ /* fn GatherBlue[T : fiu32](texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */ /* fn GatherBlue[T : fiu32](texture: texture_cube_array<T>, sampler: sampler, coords: vec4<f32>) -> vec4<T> */ /* num overloads */ 6, - /* overloads */ OverloadIndex(111), + /* overloads */ OverloadIndex(117), }, { /* [48] */ @@ -5827,7 +6012,7 @@ /* fn GatherGreen[T : fiu32](texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */ /* fn GatherGreen[T : fiu32](texture: texture_cube_array<T>, sampler: sampler, coords: vec4<f32>) -> vec4<T> */ /* num overloads */ 6, - /* overloads */ OverloadIndex(111), + /* overloads */ OverloadIndex(117), }, { /* [49] */ @@ -5838,7 +6023,7 @@ /* fn GatherRed[T : fiu32](texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */ /* fn GatherRed[T : fiu32](texture: texture_cube_array<T>, sampler: sampler, coords: vec4<f32>) -> vec4<T> */ /* num overloads */ 6, - /* overloads */ OverloadIndex(111), + /* overloads */ OverloadIndex(117), }, { /* [50] */ @@ -5890,7 +6075,7 @@ /* fn Sample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */ /* fn Sample(texture: texture_depth_cube_array, sampler: sampler, coords: vec4<f32>) -> vec4<f32> */ /* num overloads */ 15, - /* overloads */ OverloadIndex(48), + /* overloads */ OverloadIndex(66), }, { /* [52] */ @@ -5903,7 +6088,7 @@ /* fn SampleBias(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */ /* fn SampleBias(texture: texture_cube_array<f32>, sampler: sampler, coords: vec4<f32>, bias: f32) -> vec4<f32> */ /* num overloads */ 8, - /* overloads */ OverloadIndex(89), + /* overloads */ OverloadIndex(95), }, { /* [53] */ @@ -5914,7 +6099,7 @@ /* fn SampleCmp(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, value: f32) -> f32 */ /* fn SampleCmp(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec4<f32>, value: f32) -> f32 */ /* num overloads */ 6, - /* overloads */ OverloadIndex(117), + /* overloads */ OverloadIndex(123), }, { /* [54] */ @@ -5925,7 +6110,7 @@ /* fn SampleCmpLevelZero(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, value: f32) -> f32 */ /* fn SampleCmpLevelZero(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec4<f32>, value: f32) -> f32 */ /* num overloads */ 6, - /* overloads */ OverloadIndex(117), + /* overloads */ OverloadIndex(123), }, { /* [55] */ @@ -5938,7 +6123,7 @@ /* fn SampleGrad(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */ /* fn SampleGrad(texture: texture_cube_array<f32>, sampler: sampler, coords: vec4<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */ /* num overloads */ 8, - /* overloads */ OverloadIndex(97), + /* overloads */ OverloadIndex(103), }, { /* [56] */ @@ -5957,7 +6142,7 @@ /* fn SampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */ /* fn SampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec4<f32>, level: f32) -> vec4<f32> */ /* num overloads */ 14, - /* overloads */ OverloadIndex(63), + /* overloads */ OverloadIndex(81), }, };
diff --git a/src/tint/lang/hlsl/intrinsic/type_matchers.h b/src/tint/lang/hlsl/intrinsic/type_matchers.h index 250e35c..f60c59d 100644 --- a/src/tint/lang/hlsl/intrinsic/type_matchers.h +++ b/src/tint/lang/hlsl/intrinsic/type_matchers.h
@@ -32,6 +32,7 @@ #include "src/tint/lang/core/type/manager.h" #include "src/tint/lang/hlsl/type/byte_address_buffer.h" #include "src/tint/lang/hlsl/type/int8_t4_packed.h" +#include "src/tint/lang/hlsl/type/rasterizer_ordered_texture_2d.h" #include "src/tint/lang/hlsl/type/uint8_t4_packed.h" namespace tint::hlsl::intrinsic { @@ -52,6 +53,25 @@ return state.types.Get<type::ByteAddressBuffer>(static_cast<core::Access>(A.Value())); } +inline bool MatchRasterizerOrderedTexture2D(core::intrinsic::MatchState&, + const core::type::Type* ty, + core::intrinsic::Number& F) { + if (auto* buf = ty->As<type::RasterizerOrderedTexture2D>()) { + F = core::intrinsic::Number(static_cast<uint32_t>(buf->TexelFormat())); + return true; + } + return false; +} + +inline const type::RasterizerOrderedTexture2D* BuildRasterizerOrderedTexture2D( + core::intrinsic::MatchState& state, + const core::type::Type*, + core::intrinsic::Number& F) { + auto format = static_cast<core::TexelFormat>(F.Value()); + auto* subtype = type::RasterizerOrderedTexture2D::SubtypeFor(format, state.types); + return state.types.Get<type::RasterizerOrderedTexture2D>(format, subtype); +} + inline bool MatchInt8T4Packed(core::intrinsic::MatchState&, const core::type::Type* ty) { return ty->IsAnyOf<core::intrinsic::Any, type::Int8T4Packed>(); }
diff --git a/src/tint/lang/hlsl/type/BUILD.bazel b/src/tint/lang/hlsl/type/BUILD.bazel index eb9a6b5..3274b5d 100644 --- a/src/tint/lang/hlsl/type/BUILD.bazel +++ b/src/tint/lang/hlsl/type/BUILD.bazel
@@ -41,11 +41,13 @@ srcs = [ "byte_address_buffer.cc", "int8_t4_packed.cc", + "rasterizer_ordered_texture_2d.cc", "uint8_t4_packed.cc", ], hdrs = [ "byte_address_buffer.h", "int8_t4_packed.h", + "rasterizer_ordered_texture_2d.h", "uint8_t4_packed.h", ], deps = [
diff --git a/src/tint/lang/hlsl/type/BUILD.cmake b/src/tint/lang/hlsl/type/BUILD.cmake index a658de4..a13acc8 100644 --- a/src/tint/lang/hlsl/type/BUILD.cmake +++ b/src/tint/lang/hlsl/type/BUILD.cmake
@@ -43,6 +43,8 @@ lang/hlsl/type/byte_address_buffer.h lang/hlsl/type/int8_t4_packed.cc lang/hlsl/type/int8_t4_packed.h + lang/hlsl/type/rasterizer_ordered_texture_2d.cc + lang/hlsl/type/rasterizer_ordered_texture_2d.h lang/hlsl/type/uint8_t4_packed.cc lang/hlsl/type/uint8_t4_packed.h )
diff --git a/src/tint/lang/hlsl/type/BUILD.gn b/src/tint/lang/hlsl/type/BUILD.gn index 4ae871f..18cd8d7 100644 --- a/src/tint/lang/hlsl/type/BUILD.gn +++ b/src/tint/lang/hlsl/type/BUILD.gn
@@ -49,6 +49,8 @@ "byte_address_buffer.h", "int8_t4_packed.cc", "int8_t4_packed.h", + "rasterizer_ordered_texture_2d.cc", + "rasterizer_ordered_texture_2d.h", "uint8_t4_packed.cc", "uint8_t4_packed.h", ]
diff --git a/src/tint/lang/hlsl/type/rasterizer_ordered_texture_2d.cc b/src/tint/lang/hlsl/type/rasterizer_ordered_texture_2d.cc new file mode 100644 index 0000000..45e1bc7 --- /dev/null +++ b/src/tint/lang/hlsl/type/rasterizer_ordered_texture_2d.cc
@@ -0,0 +1,86 @@ +// Copyright 2024 The Dawn & Tint Authors +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include "src/tint/lang/hlsl/type/rasterizer_ordered_texture_2d.h" + +#include <cstddef> +#include <string> + +#include "src/tint/lang/core/type/clone_context.h" +#include "src/tint/lang/core/type/f32.h" +#include "src/tint/lang/core/type/i32.h" +#include "src/tint/lang/core/type/manager.h" +#include "src/tint/lang/core/type/u32.h" +#include "src/tint/lang/core/type/unique_node.h" +#include "src/tint/utils/math/hash.h" +#include "src/tint/utils/rtti/castable.h" + +TINT_INSTANTIATE_TYPEINFO(tint::hlsl::type::RasterizerOrderedTexture2D); + +namespace tint::hlsl::type { + +RasterizerOrderedTexture2D::RasterizerOrderedTexture2D(core::TexelFormat format, + const core::type::Type* subtype) + : Base(static_cast<size_t>(Hash(tint::TypeCode::Of<RasterizerOrderedTexture2D>().bits)), + core::type::TextureDimension::k2d), + texel_format_(format), + subtype_(subtype) {} + +bool RasterizerOrderedTexture2D::Equals(const UniqueNode& other) const { + if (auto* o = other.As<RasterizerOrderedTexture2D>()) { + return o->TexelFormat() == TexelFormat(); + } + return false; +} + +std::string RasterizerOrderedTexture2D::FriendlyName() const { + StringStream out; + out << "hlsl.rasterizer_ordered_texture_2d<" << ToString(TexelFormat()) << ">"; + return out.str(); +} + +core::type::Type* RasterizerOrderedTexture2D::SubtypeFor(core::TexelFormat format, + core::type::Manager& type_mgr) { + switch (format) { + case core::TexelFormat::kR32Uint: + return type_mgr.Get<core::type::U32>(); + case core::TexelFormat::kR32Sint: + return type_mgr.Get<core::type::I32>(); + case core::TexelFormat::kR32Float: + return type_mgr.Get<core::type::F32>(); + default: + break; + } + return nullptr; +} + +RasterizerOrderedTexture2D* RasterizerOrderedTexture2D::Clone(core::type::CloneContext& ctx) const { + auto* ty = subtype_->Clone(ctx); + return ctx.dst.mgr->Get<RasterizerOrderedTexture2D>(texel_format_, ty); +} + +} // namespace tint::hlsl::type
diff --git a/src/tint/lang/hlsl/type/rasterizer_ordered_texture_2d.h b/src/tint/lang/hlsl/type/rasterizer_ordered_texture_2d.h new file mode 100644 index 0000000..3c8f8a6 --- /dev/null +++ b/src/tint/lang/hlsl/type/rasterizer_ordered_texture_2d.h
@@ -0,0 +1,78 @@ +// Copyright 2024 The Dawn & Tint Authors +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef SRC_TINT_LANG_HLSL_TYPE_RASTERIZER_ORDERED_TEXTURE_2D_H_ +#define SRC_TINT_LANG_HLSL_TYPE_RASTERIZER_ORDERED_TEXTURE_2D_H_ + +#include <string> + +#include "src/tint/lang/core/texel_format.h" +#include "src/tint/lang/core/type/texture.h" + +namespace tint::hlsl::type { + +/// RasterizerOrderedTexture2D represents a 2D ROV texture +// See https://learn.microsoft.com/en-us/windows/win32/direct3d11/rasterizer-order-views +class RasterizerOrderedTexture2D final + : public Castable<RasterizerOrderedTexture2D, core::type::Texture> { + public: + /// Constructor + /// @param format the texel format + /// @param subtype the texture subtype + explicit RasterizerOrderedTexture2D(core::TexelFormat format, const Type* subtype); + + /// @returns the texel format + core::TexelFormat TexelFormat() const { return texel_format_; } + + /// @returns the storage subtype + const core::type::Type* Type() const { return subtype_; } + + /// @param other the other node to compare against + /// @returns true if the this type is equal to @p other + bool Equals(const UniqueNode& other) const override; + + /// @returns the friendly name for this type + std::string FriendlyName() const override; + + /// @param format the storage texture image format + /// @param type_mgr the Manager used to build the returned type + /// @returns the storage texture subtype for the given TexelFormat + static core::type::Type* SubtypeFor(core::TexelFormat format, core::type::Manager& type_mgr); + + /// @param ctx the clone context + /// @returns a clone of this type + RasterizerOrderedTexture2D* Clone(core::type::CloneContext& ctx) const override; + + private: + // const core::type::Type* const store_type_; + core::TexelFormat const texel_format_; + const core::type::Type* const subtype_; +}; + +} // namespace tint::hlsl::type + +#endif // SRC_TINT_LANG_HLSL_TYPE_RASTERIZER_ORDERED_TEXTURE_2D_H_
diff --git a/src/tint/lang/hlsl/writer/printer/printer.cc b/src/tint/lang/hlsl/writer/printer/printer.cc index 2abb37a..4a42a82 100644 --- a/src/tint/lang/hlsl/writer/printer/printer.cc +++ b/src/tint/lang/hlsl/writer/printer/printer.cc
@@ -106,6 +106,7 @@ #include "src/tint/lang/hlsl/ir/ternary.h" #include "src/tint/lang/hlsl/type/byte_address_buffer.h" #include "src/tint/lang/hlsl/type/int8_t4_packed.h" +#include "src/tint/lang/hlsl/type/rasterizer_ordered_texture_2d.h" #include "src/tint/lang/hlsl/type/uint8_t4_packed.h" #include "src/tint/utils/containers/hashmap.h" #include "src/tint/utils/containers/map.h" @@ -566,6 +567,8 @@ auto* st = ptr->StoreType()->As<core::type::StorageTexture>(); if (st && st->Access() != core::Access::kRead) { register_space = 'u'; + } else if (ptr->StoreType()->Is<hlsl::type::RasterizerOrderedTexture2D>()) { + register_space = 'u'; } } else if (ptr->StoreType()->Is<core::type::Sampler>()) { register_space = 's'; @@ -575,7 +578,6 @@ auto bp = var->BindingPoint(); TINT_ASSERT(bp.has_value()); - // TODO(dsinclair): Handle PixelLocal::RasterizerOrderedView attribute auto out = Line(); EmitTypeAndName(out, var->Result(0)->Type(), NameOf(var->Result(0))); out << RegisterAndSpace(register_space, bp.value()) << ";"; @@ -1288,6 +1290,10 @@ } out << "ByteAddressBuffer"; }, + [&](const hlsl::type::RasterizerOrderedTexture2D* rov) { + auto* component = ImageFormatToRWtextureType(rov->TexelFormat()); + out << "RasterizerOrderedTexture2D<" << component << ">"; + }, [&](const hlsl::type::Int8T4Packed*) { out << "int8_t4_packed"; }, [&](const hlsl::type::Uint8T4Packed*) { out << "uint8_t4_packed"; },
diff --git a/src/tint/lang/hlsl/writer/raise/BUILD.bazel b/src/tint/lang/hlsl/writer/raise/BUILD.bazel index 46be924..77966f3 100644 --- a/src/tint/lang/hlsl/writer/raise/BUILD.bazel +++ b/src/tint/lang/hlsl/writer/raise/BUILD.bazel
@@ -45,6 +45,7 @@ "decompose_uniform_access.cc", "fxc_polyfill.cc", "localize_struct_array_assignment.cc", + "pixel_local.cc", "promote_initializers.cc", "raise.cc", "replace_non_indexable_mat_vec_stores.cc", @@ -57,6 +58,7 @@ "decompose_uniform_access.h", "fxc_polyfill.h", "localize_struct_array_assignment.h", + "pixel_local.h", "promote_initializers.h", "raise.h", "replace_non_indexable_mat_vec_stores.h", @@ -104,6 +106,7 @@ "decompose_uniform_access_test.cc", "fxc_polyfill_test.cc", "localize_struct_array_assignment_test.cc", + "pixel_local_test.cc", "promote_initializers_test.cc", "replace_non_indexable_mat_vec_stores_test.cc", "shader_io_test.cc", @@ -116,6 +119,7 @@ "//src/tint/lang/core/ir", "//src/tint/lang/core/ir/transform:test", "//src/tint/lang/core/type", + "//src/tint/lang/hlsl/writer/common", "//src/tint/lang/hlsl/writer/raise", "//src/tint/utils/containers", "//src/tint/utils/diagnostic",
diff --git a/src/tint/lang/hlsl/writer/raise/BUILD.cmake b/src/tint/lang/hlsl/writer/raise/BUILD.cmake index 9f2515b..7688276 100644 --- a/src/tint/lang/hlsl/writer/raise/BUILD.cmake +++ b/src/tint/lang/hlsl/writer/raise/BUILD.cmake
@@ -51,6 +51,8 @@ lang/hlsl/writer/raise/fxc_polyfill.h lang/hlsl/writer/raise/localize_struct_array_assignment.cc lang/hlsl/writer/raise/localize_struct_array_assignment.h + lang/hlsl/writer/raise/pixel_local.cc + lang/hlsl/writer/raise/pixel_local.h lang/hlsl/writer/raise/promote_initializers.cc lang/hlsl/writer/raise/promote_initializers.h lang/hlsl/writer/raise/raise.cc @@ -105,6 +107,7 @@ lang/hlsl/writer/raise/decompose_uniform_access_test.cc lang/hlsl/writer/raise/fxc_polyfill_test.cc lang/hlsl/writer/raise/localize_struct_array_assignment_test.cc + lang/hlsl/writer/raise/pixel_local_test.cc lang/hlsl/writer/raise/promote_initializers_test.cc lang/hlsl/writer/raise/replace_non_indexable_mat_vec_stores_test.cc lang/hlsl/writer/raise/shader_io_test.cc @@ -118,6 +121,7 @@ tint_lang_core_ir tint_lang_core_ir_transform_test tint_lang_core_type + tint_lang_hlsl_writer_common tint_lang_hlsl_writer_raise tint_utils_containers tint_utils_diagnostic
diff --git a/src/tint/lang/hlsl/writer/raise/BUILD.gn b/src/tint/lang/hlsl/writer/raise/BUILD.gn index 48efb8d..6eef83a 100644 --- a/src/tint/lang/hlsl/writer/raise/BUILD.gn +++ b/src/tint/lang/hlsl/writer/raise/BUILD.gn
@@ -57,6 +57,8 @@ "fxc_polyfill.h", "localize_struct_array_assignment.cc", "localize_struct_array_assignment.h", + "pixel_local.cc", + "pixel_local.h", "promote_initializers.cc", "promote_initializers.h", "raise.cc", @@ -105,6 +107,7 @@ "decompose_uniform_access_test.cc", "fxc_polyfill_test.cc", "localize_struct_array_assignment_test.cc", + "pixel_local_test.cc", "promote_initializers_test.cc", "replace_non_indexable_mat_vec_stores_test.cc", "shader_io_test.cc", @@ -119,6 +122,7 @@ "${tint_src_dir}/lang/core/ir", "${tint_src_dir}/lang/core/ir/transform:unittests", "${tint_src_dir}/lang/core/type", + "${tint_src_dir}/lang/hlsl/writer/common", "${tint_src_dir}/lang/hlsl/writer/raise", "${tint_src_dir}/utils/containers", "${tint_src_dir}/utils/diagnostic",
diff --git a/src/tint/lang/hlsl/writer/raise/pixel_local.cc b/src/tint/lang/hlsl/writer/raise/pixel_local.cc new file mode 100644 index 0000000..886f17f --- /dev/null +++ b/src/tint/lang/hlsl/writer/raise/pixel_local.cc
@@ -0,0 +1,258 @@ +// Copyright 2024 The Dawn & Tint Authors +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include "src/tint/lang/hlsl/writer/raise/pixel_local.h" + +#include "src/tint/lang/core/ir/block.h" +#include "src/tint/lang/core/ir/builder.h" +#include "src/tint/lang/core/ir/exit.h" +#include "src/tint/lang/core/ir/loop.h" +#include "src/tint/lang/core/ir/switch.h" +#include "src/tint/lang/core/ir/validator.h" +#include "src/tint/lang/core/type/manager.h" +#include "src/tint/lang/hlsl/builtin_fn.h" +#include "src/tint/lang/hlsl/ir/builtin_call.h" +#include "src/tint/lang/hlsl/ir/member_builtin_call.h" +#include "src/tint/lang/hlsl/type/rasterizer_ordered_texture_2d.h" +#include "src/tint/utils/containers/vector.h" +#include "src/tint/utils/ice/ice.h" +#include "src/tint/utils/result/result.h" + +namespace tint::hlsl::writer::raise { +namespace { + +using namespace tint::core::fluent_types; // NOLINT + +/// PIMPL state for the transform. +struct State { + // Config options + const PixelLocalOptions& options; + + /// The IR module. + core::ir::Module& ir; + + /// The IR builder. + core::ir::Builder b{ir}; + + /// The type manager. + core::type::Manager& ty{ir.Types()}; + + // A Rasterizer Order View (ROV) + struct ROV { + core::ir::Var* var; + core::type::Type* subtype; + }; + // Create ROV root variables, one per member of `pixel_local_struct` + Vector<ROV, 4> CreateROVs(const core::type::Struct* pixel_local_struct) { + Vector<ROV, 4> rovs; + // Create ROVs for each member of the struct + for (auto* mem : pixel_local_struct->Members()) { + auto options_texel_format = options.attachment_formats.find(mem->Index()); + auto options_binding = options.attachments.find(mem->Index()); + if (options_texel_format == options.attachment_formats.end() || + options_binding == options.attachments.end()) { + TINT_ICE() << "missing options for member at index " << mem->Index(); + } + core::TexelFormat texel_format; + switch (options_texel_format->second) { + case PixelLocalOptions::TexelFormat::kR32Sint: + texel_format = core::TexelFormat::kR32Sint; + break; + case PixelLocalOptions::TexelFormat::kR32Uint: + texel_format = core::TexelFormat::kR32Uint; + break; + case PixelLocalOptions::TexelFormat::kR32Float: + texel_format = core::TexelFormat::kR32Float; + break; + default: + TINT_ICE() << "missing texel format for pixel local storage attachment"; + } + auto* subtype = hlsl::type::RasterizerOrderedTexture2D::SubtypeFor(texel_format, ty); + + auto* rov_ty = ty.Get<hlsl::type::RasterizerOrderedTexture2D>(texel_format, subtype); + auto* rov = b.Var("pixel_local_" + mem->Name().Name(), ty.ptr<handle>(rov_ty)); + rov->SetBindingPoint(options.group_index, options_binding->second); + + ir.root_block->Append(rov); + rovs.Emplace(rov, subtype); + } + return rovs; + } + + void ProcessFragmentEntryPoint(core::ir::Function* entry_point, + core::ir::Var* pixel_local_var, + const core::type::Struct* pixel_local_struct, + const Vector<ROV, 4>& rovs) { + TINT_ASSERT(entry_point->Params().Length() == 1); // Guaranteed by ShaderIO + core::ir::FunctionParam* entry_point_param = entry_point->Params()[0]; + + auto* param_struct = entry_point_param->Type()->As<core::type::Struct>(); + TINT_ASSERT(param_struct); // Guaranteed by ShaderIO + + // Find the position builtin in the struct + const core::type::StructMember* position_member = nullptr; + for (auto* mem : param_struct->Members()) { + if (mem->Attributes().builtin == core::BuiltinValue::kPosition) { + position_member = mem; + break; + } + } + TINT_ASSERT(position_member); + + // Get the entry point's single return instruction. We expect only one as this transform + // should run after ShaderIO. + core::ir::Return* entry_point_ret = nullptr; + if (entry_point->UsagesUnsorted().Count() == 1) { + entry_point_ret = + entry_point->UsagesUnsorted().begin()->instruction->As<core::ir::Return>(); + } + if (!entry_point_ret) { + TINT_ICE() << "expected entry point with a single return"; + } + + // Change the address space of the var from 'pixel_local' to 'private' + pixel_local_var->Result(0)->SetType(ty.ptr<private_>(pixel_local_struct)); + // As well as the usages + for (auto& usage : pixel_local_var->Result(0)->UsagesUnsorted()) { + if (auto* ptr = usage->instruction->Result(0)->Type()->As<core::type::Pointer>()) { + usage->instruction->Result(0)->SetType(ty.ptr<private_>(ptr->StoreType())); + } + } + + // Insert coord decl used to index ROVs at the entry point start + core::ir::Instruction* coord = nullptr; + b.InsertBefore(entry_point->Block()->Front(), [&] { + coord = b.Access(ty.vec4<f32>(), entry_point_param, u32(position_member->Index())); + coord = b.Swizzle(ty.vec2<f32>(), coord, {0, 1}); + coord = b.Convert<vec2<u32>>(coord); // Input type to .Load + }); + + // Insert copy from ROVs to the struct right after the coord decl + b.InsertAfter(coord, [&] { + for (auto* mem : pixel_local_struct->Members()) { + auto& rov = rovs[mem->Index()]; + auto* mem_ty = mem->Type(); + TINT_ASSERT(mem_ty->Is<core::type::Scalar>()); + core::ir::Instruction* from = b.Load(rov.var); + // Load returns a vec4, so we need to swizzle the first element + from = b.MemberCall<hlsl::ir::MemberBuiltinCall>( + ty.vec4(rov.subtype), tint::hlsl::BuiltinFn::kLoad, from, coord); + from = b.Swizzle(rov.subtype, from, {0}); + if (mem_ty != rov.subtype) { + // ROV and struct member types don't match + from = b.Convert(mem_ty, from); + } + auto* to = b.Access(ty.ptr<private_>(mem_ty), pixel_local_var, u32(mem->Index())); + b.Store(to, from); + } + }); + + // Insert a copy from the struct back to ROVs at the return point + b.InsertBefore(entry_point_ret, [&] { + for (auto* mem : pixel_local_struct->Members()) { + auto& rov = rovs[mem->Index()]; + auto* mem_ty = mem->Type(); + TINT_ASSERT(mem_ty->Is<core::type::Scalar>()); + core::ir::Instruction* from = + b.Access(ty.ptr<private_>(mem_ty), pixel_local_var, u32(mem->Index())); + if (mem_ty != rov.subtype) { + // ROV and struct member types don't match + from = b.Convert(rov.subtype, from); + } + // Store requires a vec4 + from = b.Swizzle(ty.vec4(rov.subtype), from, {0, 0, 0, 0}); + core::ir::Instruction* to = b.Load(rov.var); + b.Call<hlsl::ir::BuiltinCall>( // + ty.void_(), hlsl::BuiltinFn::kTextureStore, to, coord, from); + } + }); + } + + /// Process the module. + void Process() { + TINT_ASSERT(options.attachments.size() == options.attachment_formats.size()); + if (options.attachments.size() == 0) { + return; + } + + // Inline pointers + for (auto* inst : ir.Instructions()) { + if (auto* l = inst->As<core::ir::Let>()) { + if (l->Result(0)->Type()->Is<core::type::Pointer>()) { + l->Result(0)->ReplaceAllUsesWith(l->Value()); + l->Destroy(); + } + } + } + + // Find the pixel_local module var, if any + core::ir::Var* pixel_local_var = nullptr; + const core::type::Struct* pixel_local_struct = nullptr; + for (auto* inst : *ir.root_block) { + if (auto* var = inst->As<core::ir::Var>()) { + auto* ptr = var->Result(0)->Type()->As<core::type::Pointer>(); + if (ptr->AddressSpace() == core::AddressSpace::kPixelLocal) { + pixel_local_var = var; + pixel_local_struct = ptr->StoreType()->As<core::type::Struct>(); + break; + } + } + } + if (!pixel_local_var || !pixel_local_var->Result(0)->IsUsed()) { + return; + } + if (!pixel_local_struct) { + TINT_ICE() << "pixel_local var must be of struct type"; + } + if (pixel_local_struct->Members().Length() != options.attachments.size()) { + TINT_ICE() << "missing options for each member of the pixel_local struct"; + } + + auto rovs = CreateROVs(pixel_local_struct); + + for (auto f : ir.functions) { + if (f->Stage() == core::ir::Function::PipelineStage::kFragment) { + ProcessFragmentEntryPoint(f, pixel_local_var, pixel_local_struct, rovs); + } + } + } +}; + +} // namespace + +Result<SuccessType> PixelLocal(core::ir::Module& ir, const PixelLocalConfig& config) { + auto result = ValidateAndDumpIfNeeded(ir, "PixelLocal transform"); + if (result != Success) { + return result.Failure(); + } + + State{config.options, ir}.Process(); + + return Success; +} + +} // namespace tint::hlsl::writer::raise
diff --git a/src/tint/lang/hlsl/writer/raise/pixel_local.h b/src/tint/lang/hlsl/writer/raise/pixel_local.h new file mode 100644 index 0000000..c889d5c --- /dev/null +++ b/src/tint/lang/hlsl/writer/raise/pixel_local.h
@@ -0,0 +1,53 @@ +// Copyright 2024 The Dawn & Tint Authors +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef SRC_TINT_LANG_HLSL_WRITER_RAISE_PIXEL_LOCAL_H_ +#define SRC_TINT_LANG_HLSL_WRITER_RAISE_PIXEL_LOCAL_H_ + +#include "src/tint/lang/hlsl/writer/common/options.h" +#include "src/tint/utils/result/result.h" + +// Forward declarations. +namespace tint::core::ir { +class Module; +} // namespace tint::core::ir + +namespace tint::hlsl::writer::raise { + +struct PixelLocalConfig { + /// User-facing API options + PixelLocalOptions options; +}; + +/// PixelLocal is a transform that implements the PixelLocal feature for HLSL. +/// @param module the module to transform +/// @returns success or failure +Result<SuccessType> PixelLocal(core::ir::Module& module, const PixelLocalConfig& config); + +} // namespace tint::hlsl::writer::raise + +#endif // SRC_TINT_LANG_HLSL_WRITER_RAISE_PIXEL_LOCAL_H_
diff --git a/src/tint/lang/hlsl/writer/raise/pixel_local_test.cc b/src/tint/lang/hlsl/writer/raise/pixel_local_test.cc new file mode 100644 index 0000000..234da63 --- /dev/null +++ b/src/tint/lang/hlsl/writer/raise/pixel_local_test.cc
@@ -0,0 +1,897 @@ +// Copyright 2024 The Dawn & Tint Authors +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include "src/tint/lang/hlsl/writer/raise/pixel_local.h" + +#include <gtest/gtest.h> +#include <tuple> + +#include "src/tint/lang/core/fluent_types.h" +#include "src/tint/lang/core/ir/clone_context.h" +#include "src/tint/lang/core/ir/function.h" +#include "src/tint/lang/core/ir/transform/helper_test.h" +#include "src/tint/lang/core/number.h" + +using namespace tint::core::fluent_types; // NOLINT +using namespace tint::core::number_suffixes; // NOLINT + +namespace tint::hlsl::writer::raise { +namespace { + +constexpr auto pixel_local = core::AddressSpace::kPixelLocal; + +struct HlslWriterPixelLocalTest : core::ir::transform::TransformTest { + struct Result { + core::ir::Function* func; + core::ir::Var* pl; + }; + Result OneArgFunc(bool multiple_builtins = false) { + auto* pixel_local_struct_ty = + ty.Struct(mod.symbols.New("PixelLocal"), { + {mod.symbols.New("a"), ty.u32()}, + }); + auto* pl = b.Var("pl", ty.ptr<pixel_local>(pixel_local_struct_ty)); + mod.root_block->Append(pl); + + Vector<core::type::Manager::StructMemberDesc, 3> members; + core::IOAttributes attrs; + attrs.builtin = core::BuiltinValue::kPosition; + members.Emplace(mod.symbols.New("pos"), ty.vec4<f32>(), attrs); + if (multiple_builtins) { + attrs.builtin = core::BuiltinValue::kFrontFacing; + members.Emplace(mod.symbols.New("front_facing"), ty.bool_(), attrs); + attrs.builtin = core::BuiltinValue::kFragDepth; + members.Emplace(mod.symbols.New("sample_index"), ty.u32(), attrs); + } + auto* param_struct_ty = ty.Struct(mod.symbols.New("params"), members); + + auto* func = + b.Function("main", ty.vec4<f32>(), core::ir::Function::PipelineStage::kFragment); + func->SetReturnLocation(0_u); + func->SetParams({b.FunctionParam(param_struct_ty)}); + return {func, pl}; + } + PixelLocalConfig OneArgConfig() { + PixelLocalConfig config; + config.options.attachment_formats.emplace(0, PixelLocalOptions::TexelFormat::kR32Uint); + config.options.attachments.emplace(0, 10); + config.options.group_index = 7; + return config; + } + + Result ThreeArgFunc() { + auto* pixel_local_struct_ty = + ty.Struct(mod.symbols.New("PixelLocal"), {{mod.symbols.New("a"), ty.u32()}, + {mod.symbols.New("b"), ty.i32()}, + {mod.symbols.New("c"), ty.f32()}}); + auto* pl = b.Var("pl", ty.ptr<pixel_local>(pixel_local_struct_ty)); + mod.root_block->Append(pl); + + core::IOAttributes attrs; + attrs.builtin = core::BuiltinValue::kPosition; + auto* param_struct_ty = + ty.Struct(mod.symbols.New("params"), {{mod.symbols.New("pos"), ty.vec4<f32>(), attrs}}); + + auto* func = + b.Function("main", ty.vec4<f32>(), core::ir::Function::PipelineStage::kFragment); + func->SetReturnLocation(0_u); + func->SetParams({b.FunctionParam(param_struct_ty)}); + return {func, pl}; + } + PixelLocalConfig ThreeArgConfig() { + PixelLocalConfig config; + config.options.attachment_formats.emplace(0, PixelLocalOptions::TexelFormat::kR32Uint); + config.options.attachment_formats.emplace(1, PixelLocalOptions::TexelFormat::kR32Sint); + config.options.attachment_formats.emplace(2, PixelLocalOptions::TexelFormat::kR32Float); + config.options.attachments.emplace(0, 10); + config.options.attachments.emplace(1, 12); + config.options.attachments.emplace(2, 14); + config.options.group_index = 7; + return config; + } +}; + +TEST_F(HlslWriterPixelLocalTest, Unused) { + auto r = OneArgFunc(); + b.Append(r.func->Block(), [&] { // + b.Return(r.func, b.Construct<vec4<f32>>(1_f, 0_f, 0_f, 1_f)); + }); + + auto* src = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<pixel_local, PixelLocal, read_write> = var +} + +%main = @fragment func(%3:params):vec4<f32> [@location(0)] { + $B2: { + %4:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + ret %4 + } +} +)"; + + EXPECT_EQ(src, str()); + + auto* expect = src; + + auto config = OneArgConfig(); + Run(PixelLocal, config); + + EXPECT_EQ(expect, str()); +} + +TEST_F(HlslWriterPixelLocalTest, UsedInEntry) { + auto r = OneArgFunc(); + b.Append(r.func->Block(), [&] { + auto* access = b.Access(ty.ptr<pixel_local>(ty.u32()), r.pl, 0_u); + auto* add = b.Add<u32>(b.Load(access), 42_u); + b.Store(access, add); + b.Return(r.func, b.Construct<vec4<f32>>(1_f, 0_f, 0_f, 1_f)); + }); + + auto* src = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<pixel_local, PixelLocal, read_write> = var +} + +%main = @fragment func(%3:params):vec4<f32> [@location(0)] { + $B2: { + %4:ptr<pixel_local, u32, read_write> = access %pl, 0u + %5:u32 = load %4 + %6:u32 = add %5, 42u + store %4, %6 + %7:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + ret %7 + } +} +)"; + + EXPECT_EQ(src, str()); + + auto* expect = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<private, PixelLocal, read_write> = var + %pixel_local_a:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32uint>, read> = var @binding_point(7, 10) +} + +%main = @fragment func(%4:params):vec4<f32> [@location(0)] { + $B2: { + %5:vec4<f32> = access %4, 0u + %6:vec2<f32> = swizzle %5, xy + %7:vec2<u32> = convert %6 + %8:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %9:vec4<u32> = %8.Load %7 + %10:u32 = swizzle %9, x + %11:ptr<private, u32, read_write> = access %pl, 0u + store %11, %10 + %12:ptr<private, u32, read_write> = access %pl, 0u + %13:u32 = load %12 + %14:u32 = add %13, 42u + store %12, %14 + %15:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + %16:ptr<private, u32, read_write> = access %pl, 0u + %17:vec4<u32> = swizzle %16, xxxx + %18:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %19:void = hlsl.textureStore %18, %7, %17 + ret %15 + } +} +)"; + + auto config = OneArgConfig(); + Run(PixelLocal, config); + + EXPECT_EQ(expect, str()); +} + +TEST_F(HlslWriterPixelLocalTest, UsedInNonEntry) { + auto r = OneArgFunc(); + auto* func2 = b.Function("foo", ty.void_()); + b.Append(func2->Block(), [&] { + auto* access = b.Access(ty.ptr<pixel_local>(ty.u32()), r.pl, 0_u); + auto* add = b.Add<u32>(b.Load(access), 42_u); + b.Store(access, add); + b.Return(func2); + }); + b.Append(r.func->Block(), [&] { + b.Call(func2); + b.Return(r.func, b.Construct<vec4<f32>>(1_f, 0_f, 0_f, 1_f)); + }); + + auto* src = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<pixel_local, PixelLocal, read_write> = var +} + +%main = @fragment func(%3:params):vec4<f32> [@location(0)] { + $B2: { + %4:void = call %foo + %6:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + ret %6 + } +} +%foo = func():void { + $B3: { + %7:ptr<pixel_local, u32, read_write> = access %pl, 0u + %8:u32 = load %7 + %9:u32 = add %8, 42u + store %7, %9 + ret + } +} +)"; + + EXPECT_EQ(src, str()); + + auto* expect = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<private, PixelLocal, read_write> = var + %pixel_local_a:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32uint>, read> = var @binding_point(7, 10) +} + +%main = @fragment func(%4:params):vec4<f32> [@location(0)] { + $B2: { + %5:vec4<f32> = access %4, 0u + %6:vec2<f32> = swizzle %5, xy + %7:vec2<u32> = convert %6 + %8:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %9:vec4<u32> = %8.Load %7 + %10:u32 = swizzle %9, x + %11:ptr<private, u32, read_write> = access %pl, 0u + store %11, %10 + %12:void = call %foo + %14:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + %15:ptr<private, u32, read_write> = access %pl, 0u + %16:vec4<u32> = swizzle %15, xxxx + %17:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %18:void = hlsl.textureStore %17, %7, %16 + ret %14 + } +} +%foo = func():void { + $B3: { + %19:ptr<private, u32, read_write> = access %pl, 0u + %20:u32 = load %19 + %21:u32 = add %20, 42u + store %19, %21 + ret + } +} +)"; + + auto config = OneArgConfig(); + Run(PixelLocal, config); + + EXPECT_EQ(expect, str()); +} + +TEST_F(HlslWriterPixelLocalTest, UsedInNonEntryViaPointer) { + auto r = OneArgFunc(); + auto* func2 = b.Function("foo", ty.void_()); + b.Append(func2->Block(), [&] { + auto* access = b.Access(ty.ptr<pixel_local>(ty.u32()), r.pl, 0_u); + auto* p = b.Let("p", access); + auto* add = b.Add<u32>(b.Load(p), 42_u); + b.Store(access, add); + b.Return(func2); + }); + b.Append(r.func->Block(), [&] { + b.Call(func2); + b.Return(r.func, b.Construct<vec4<f32>>(1_f, 0_f, 0_f, 1_f)); + }); + + auto* src = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<pixel_local, PixelLocal, read_write> = var +} + +%main = @fragment func(%3:params):vec4<f32> [@location(0)] { + $B2: { + %4:void = call %foo + %6:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + ret %6 + } +} +%foo = func():void { + $B3: { + %7:ptr<pixel_local, u32, read_write> = access %pl, 0u + %p:ptr<pixel_local, u32, read_write> = let %7 + %9:u32 = load %p + %10:u32 = add %9, 42u + store %7, %10 + ret + } +} +)"; + + EXPECT_EQ(src, str()); + + auto* expect = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<private, PixelLocal, read_write> = var + %pixel_local_a:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32uint>, read> = var @binding_point(7, 10) +} + +%main = @fragment func(%4:params):vec4<f32> [@location(0)] { + $B2: { + %5:vec4<f32> = access %4, 0u + %6:vec2<f32> = swizzle %5, xy + %7:vec2<u32> = convert %6 + %8:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %9:vec4<u32> = %8.Load %7 + %10:u32 = swizzle %9, x + %11:ptr<private, u32, read_write> = access %pl, 0u + store %11, %10 + %12:void = call %foo + %14:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + %15:ptr<private, u32, read_write> = access %pl, 0u + %16:vec4<u32> = swizzle %15, xxxx + %17:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %18:void = hlsl.textureStore %17, %7, %16 + ret %14 + } +} +%foo = func():void { + $B3: { + %19:ptr<private, u32, read_write> = access %pl, 0u + %20:u32 = load %19 + %21:u32 = add %20, 42u + store %19, %21 + ret + } +} +)"; + + auto config = OneArgConfig(); + Run(PixelLocal, config); + + EXPECT_EQ(expect, str()); +} + +TEST_F(HlslWriterPixelLocalTest, MultipleInputBuiltins) { + auto r = OneArgFunc(/*multiple_builtins*/ true); + b.Append(r.func->Block(), [&] { + auto* access = b.Access(ty.ptr<pixel_local>(ty.u32()), r.pl, 0_u); + auto* add = b.Add<u32>(b.Load(access), 42_u); + b.Store(access, add); + b.Return(r.func, b.Construct<vec4<f32>>(1_f, 0_f, 0_f, 1_f)); + }); + + auto* src = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) + front_facing:bool @offset(16), @builtin(front_facing) + sample_index:u32 @offset(20), @builtin(frag_depth) +} + +$B1: { # root + %pl:ptr<pixel_local, PixelLocal, read_write> = var +} + +%main = @fragment func(%3:params):vec4<f32> [@location(0)] { + $B2: { + %4:ptr<pixel_local, u32, read_write> = access %pl, 0u + %5:u32 = load %4 + %6:u32 = add %5, 42u + store %4, %6 + %7:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + ret %7 + } +} +)"; + + EXPECT_EQ(src, str()); + + auto* expect = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) + front_facing:bool @offset(16), @builtin(front_facing) + sample_index:u32 @offset(20), @builtin(frag_depth) +} + +$B1: { # root + %pl:ptr<private, PixelLocal, read_write> = var + %pixel_local_a:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32uint>, read> = var @binding_point(7, 10) +} + +%main = @fragment func(%4:params):vec4<f32> [@location(0)] { + $B2: { + %5:vec4<f32> = access %4, 0u + %6:vec2<f32> = swizzle %5, xy + %7:vec2<u32> = convert %6 + %8:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %9:vec4<u32> = %8.Load %7 + %10:u32 = swizzle %9, x + %11:ptr<private, u32, read_write> = access %pl, 0u + store %11, %10 + %12:ptr<private, u32, read_write> = access %pl, 0u + %13:u32 = load %12 + %14:u32 = add %13, 42u + store %12, %14 + %15:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + %16:ptr<private, u32, read_write> = access %pl, 0u + %17:vec4<u32> = swizzle %16, xxxx + %18:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %19:void = hlsl.textureStore %18, %7, %17 + ret %15 + } +} +)"; + + auto config = OneArgConfig(); + Run(PixelLocal, config); + + EXPECT_EQ(expect, str()); +} + +TEST_F(HlslWriterPixelLocalTest, MultipleEntryPoints) { + auto* pixel_local_struct_ty = + ty.Struct(mod.symbols.New("PixelLocal"), { + {mod.symbols.New("a"), ty.u32()}, + }); + auto* pl = b.Var("pl", ty.ptr<pixel_local>(pixel_local_struct_ty)); + mod.root_block->Append(pl); + + Vector<core::type::Manager::StructMemberDesc, 3> members; + core::IOAttributes attrs; + attrs.builtin = core::BuiltinValue::kPosition; + members.Emplace(mod.symbols.New("pos"), ty.vec4<f32>(), attrs); + auto* param_struct_ty = ty.Struct(mod.symbols.New("params"), members); + + for (size_t i = 0; i < 3; ++i) { + auto* func = b.Function("main" + std::to_string(i), ty.vec4<f32>(), + core::ir::Function::PipelineStage::kFragment); + func->SetReturnLocation(0_u); + func->SetParams({b.FunctionParam(param_struct_ty)}); + + b.Append(func->Block(), [&] { + auto* access = b.Access(ty.ptr<pixel_local>(ty.u32()), pl, 0_u); + auto* add = b.Add<u32>(b.Load(access), 42_u); + b.Store(access, add); + b.Return(func, b.Construct<vec4<f32>>(1_f, 0_f, 0_f, 1_f)); + }); + } + + auto* src = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<pixel_local, PixelLocal, read_write> = var +} + +%main0 = @fragment func(%3:params):vec4<f32> [@location(0)] { + $B2: { + %4:ptr<pixel_local, u32, read_write> = access %pl, 0u + %5:u32 = load %4 + %6:u32 = add %5, 42u + store %4, %6 + %7:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + ret %7 + } +} +%main1 = @fragment func(%9:params):vec4<f32> [@location(0)] { + $B3: { + %10:ptr<pixel_local, u32, read_write> = access %pl, 0u + %11:u32 = load %10 + %12:u32 = add %11, 42u + store %10, %12 + %13:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + ret %13 + } +} +%main2 = @fragment func(%15:params):vec4<f32> [@location(0)] { + $B4: { + %16:ptr<pixel_local, u32, read_write> = access %pl, 0u + %17:u32 = load %16 + %18:u32 = add %17, 42u + store %16, %18 + %19:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + ret %19 + } +} +)"; + + EXPECT_EQ(src, str()); + + auto* expect = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<private, PixelLocal, read_write> = var + %pixel_local_a:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32uint>, read> = var @binding_point(7, 10) +} + +%main0 = @fragment func(%4:params):vec4<f32> [@location(0)] { + $B2: { + %5:vec4<f32> = access %4, 0u + %6:vec2<f32> = swizzle %5, xy + %7:vec2<u32> = convert %6 + %8:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %9:vec4<u32> = %8.Load %7 + %10:u32 = swizzle %9, x + %11:ptr<private, u32, read_write> = access %pl, 0u + store %11, %10 + %12:ptr<private, u32, read_write> = access %pl, 0u + %13:u32 = load %12 + %14:u32 = add %13, 42u + store %12, %14 + %15:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + %16:ptr<private, u32, read_write> = access %pl, 0u + %17:vec4<u32> = swizzle %16, xxxx + %18:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %19:void = hlsl.textureStore %18, %7, %17 + ret %15 + } +} +%main1 = @fragment func(%21:params):vec4<f32> [@location(0)] { + $B3: { + %22:vec4<f32> = access %21, 0u + %23:vec2<f32> = swizzle %22, xy + %24:vec2<u32> = convert %23 + %25:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %26:vec4<u32> = %25.Load %24 + %27:u32 = swizzle %26, x + %28:ptr<private, u32, read_write> = access %pl, 0u + store %28, %27 + %29:ptr<private, u32, read_write> = access %pl, 0u + %30:u32 = load %29 + %31:u32 = add %30, 42u + store %29, %31 + %32:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + %33:ptr<private, u32, read_write> = access %pl, 0u + %34:vec4<u32> = swizzle %33, xxxx + %35:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %36:void = hlsl.textureStore %35, %24, %34 + ret %32 + } +} +%main2 = @fragment func(%38:params):vec4<f32> [@location(0)] { + $B4: { + %39:vec4<f32> = access %38, 0u + %40:vec2<f32> = swizzle %39, xy + %41:vec2<u32> = convert %40 + %42:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %43:vec4<u32> = %42.Load %41 + %44:u32 = swizzle %43, x + %45:ptr<private, u32, read_write> = access %pl, 0u + store %45, %44 + %46:ptr<private, u32, read_write> = access %pl, 0u + %47:u32 = load %46 + %48:u32 = add %47, 42u + store %46, %48 + %49:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + %50:ptr<private, u32, read_write> = access %pl, 0u + %51:vec4<u32> = swizzle %50, xxxx + %52:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %53:void = hlsl.textureStore %52, %41, %51 + ret %49 + } +} +)"; + + auto config = OneArgConfig(); + Run(PixelLocal, config); + + EXPECT_EQ(expect, str()); +} + +TEST_F(HlslWriterPixelLocalTest, MultipleMembers) { + auto r = ThreeArgFunc(); + b.Append(r.func->Block(), [&] { + auto* access = b.Access(ty.ptr<pixel_local>(ty.u32()), r.pl, 0_u); + auto* add = b.Add<u32>(b.Load(access), 42_u); + b.Store(access, add); + b.Return(r.func, b.Construct<vec4<f32>>(1_f, 0_f, 0_f, 1_f)); + }); + + auto* src = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) + b:i32 @offset(4) + c:f32 @offset(8) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<pixel_local, PixelLocal, read_write> = var +} + +%main = @fragment func(%3:params):vec4<f32> [@location(0)] { + $B2: { + %4:ptr<pixel_local, u32, read_write> = access %pl, 0u + %5:u32 = load %4 + %6:u32 = add %5, 42u + store %4, %6 + %7:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + ret %7 + } +} +)"; + + EXPECT_EQ(src, str()); + + auto* expect = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) + b:i32 @offset(4) + c:f32 @offset(8) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<private, PixelLocal, read_write> = var + %pixel_local_a:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32uint>, read> = var @binding_point(7, 10) + %pixel_local_b:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32sint>, read> = var @binding_point(7, 12) + %pixel_local_c:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32float>, read> = var @binding_point(7, 14) +} + +%main = @fragment func(%6:params):vec4<f32> [@location(0)] { + $B2: { + %7:vec4<f32> = access %6, 0u + %8:vec2<f32> = swizzle %7, xy + %9:vec2<u32> = convert %8 + %10:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %11:vec4<u32> = %10.Load %9 + %12:u32 = swizzle %11, x + %13:ptr<private, u32, read_write> = access %pl, 0u + store %13, %12 + %14:hlsl.rasterizer_ordered_texture_2d<r32sint> = load %pixel_local_b + %15:vec4<i32> = %14.Load %9 + %16:i32 = swizzle %15, x + %17:ptr<private, i32, read_write> = access %pl, 1u + store %17, %16 + %18:hlsl.rasterizer_ordered_texture_2d<r32float> = load %pixel_local_c + %19:vec4<f32> = %18.Load %9 + %20:f32 = swizzle %19, x + %21:ptr<private, f32, read_write> = access %pl, 2u + store %21, %20 + %22:ptr<private, u32, read_write> = access %pl, 0u + %23:u32 = load %22 + %24:u32 = add %23, 42u + store %22, %24 + %25:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + %26:ptr<private, u32, read_write> = access %pl, 0u + %27:vec4<u32> = swizzle %26, xxxx + %28:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_a + %29:void = hlsl.textureStore %28, %9, %27 + %30:ptr<private, i32, read_write> = access %pl, 1u + %31:vec4<i32> = swizzle %30, xxxx + %32:hlsl.rasterizer_ordered_texture_2d<r32sint> = load %pixel_local_b + %33:void = hlsl.textureStore %32, %9, %31 + %34:ptr<private, f32, read_write> = access %pl, 2u + %35:vec4<f32> = swizzle %34, xxxx + %36:hlsl.rasterizer_ordered_texture_2d<r32float> = load %pixel_local_c + %37:void = hlsl.textureStore %36, %9, %35 + ret %25 + } +} +)"; + + auto config = ThreeArgConfig(); + Run(PixelLocal, config); + + EXPECT_EQ(expect, str()); +} + +TEST_F(HlslWriterPixelLocalTest, MultipleMembers_MismatchedTypes) { + auto r = ThreeArgFunc(); + b.Append(r.func->Block(), [&] { + auto* access = b.Access(ty.ptr<pixel_local>(ty.u32()), r.pl, 0_u); + auto* add = b.Add<u32>(b.Load(access), 42_u); + b.Store(access, add); + b.Return(r.func, b.Construct<vec4<f32>>(1_f, 0_f, 0_f, 1_f)); + }); + + auto* src = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) + b:i32 @offset(4) + c:f32 @offset(8) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<pixel_local, PixelLocal, read_write> = var +} + +%main = @fragment func(%3:params):vec4<f32> [@location(0)] { + $B2: { + %4:ptr<pixel_local, u32, read_write> = access %pl, 0u + %5:u32 = load %4 + %6:u32 = add %5, 42u + store %4, %6 + %7:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + ret %7 + } +} +)"; + + EXPECT_EQ(src, str()); + + auto* expect = R"( +PixelLocal = struct @align(4) { + a:u32 @offset(0) + b:i32 @offset(4) + c:f32 @offset(8) +} + +params = struct @align(16) { + pos:vec4<f32> @offset(0), @builtin(position) +} + +$B1: { # root + %pl:ptr<private, PixelLocal, read_write> = var + %pixel_local_a:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32float>, read> = var @binding_point(7, 10) + %pixel_local_b:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32uint>, read> = var @binding_point(7, 12) + %pixel_local_c:ptr<handle, hlsl.rasterizer_ordered_texture_2d<r32sint>, read> = var @binding_point(7, 14) +} + +%main = @fragment func(%6:params):vec4<f32> [@location(0)] { + $B2: { + %7:vec4<f32> = access %6, 0u + %8:vec2<f32> = swizzle %7, xy + %9:vec2<u32> = convert %8 + %10:hlsl.rasterizer_ordered_texture_2d<r32float> = load %pixel_local_a + %11:vec4<f32> = %10.Load %9 + %12:f32 = swizzle %11, x + %13:u32 = convert %12 + %14:ptr<private, u32, read_write> = access %pl, 0u + store %14, %13 + %15:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_b + %16:vec4<u32> = %15.Load %9 + %17:u32 = swizzle %16, x + %18:i32 = convert %17 + %19:ptr<private, i32, read_write> = access %pl, 1u + store %19, %18 + %20:hlsl.rasterizer_ordered_texture_2d<r32sint> = load %pixel_local_c + %21:vec4<i32> = %20.Load %9 + %22:i32 = swizzle %21, x + %23:f32 = convert %22 + %24:ptr<private, f32, read_write> = access %pl, 2u + store %24, %23 + %25:ptr<private, u32, read_write> = access %pl, 0u + %26:u32 = load %25 + %27:u32 = add %26, 42u + store %25, %27 + %28:vec4<f32> = construct 1.0f, 0.0f, 0.0f, 1.0f + %29:ptr<private, u32, read_write> = access %pl, 0u + %30:f32 = convert %29 + %31:vec4<f32> = swizzle %30, xxxx + %32:hlsl.rasterizer_ordered_texture_2d<r32float> = load %pixel_local_a + %33:void = hlsl.textureStore %32, %9, %31 + %34:ptr<private, i32, read_write> = access %pl, 1u + %35:u32 = convert %34 + %36:vec4<u32> = swizzle %35, xxxx + %37:hlsl.rasterizer_ordered_texture_2d<r32uint> = load %pixel_local_b + %38:void = hlsl.textureStore %37, %9, %36 + %39:ptr<private, f32, read_write> = access %pl, 2u + %40:i32 = convert %39 + %41:vec4<i32> = swizzle %40, xxxx + %42:hlsl.rasterizer_ordered_texture_2d<r32sint> = load %pixel_local_c + %43:void = hlsl.textureStore %42, %9, %41 + ret %28 + } +} +)"; + + auto config = ThreeArgConfig(); + // Overwrite the three format types to mismatch the ones in the IR + config.options.attachment_formats[0] = PixelLocalOptions::TexelFormat::kR32Float; + config.options.attachment_formats[1] = PixelLocalOptions::TexelFormat::kR32Uint; + config.options.attachment_formats[2] = PixelLocalOptions::TexelFormat::kR32Sint; + Run(PixelLocal, config); + + EXPECT_EQ(expect, str()); +} + +} // namespace +} // namespace tint::hlsl::writer::raise
diff --git a/src/tint/lang/hlsl/writer/raise/raise.cc b/src/tint/lang/hlsl/writer/raise/raise.cc index 228d1e41..53a75b1 100644 --- a/src/tint/lang/hlsl/writer/raise/raise.cc +++ b/src/tint/lang/hlsl/writer/raise/raise.cc
@@ -53,6 +53,7 @@ #include "src/tint/lang/hlsl/writer/raise/decompose_uniform_access.h" #include "src/tint/lang/hlsl/writer/raise/fxc_polyfill.h" #include "src/tint/lang/hlsl/writer/raise/localize_struct_array_assignment.h" +#include "src/tint/lang/hlsl/writer/raise/pixel_local.h" #include "src/tint/lang/hlsl/writer/raise/promote_initializers.h" #include "src/tint/lang/hlsl/writer/raise/replace_non_indexable_mat_vec_stores.h" #include "src/tint/lang/hlsl/writer/raise/shader_io.h" @@ -163,11 +164,14 @@ RUN_TRANSFORM(core::ir::transform::ZeroInitWorkgroupMemory, module); } + const bool pixel_local_enabled = !options.pixel_local.attachment_formats.empty(); + // ShaderIO must be run before DecomposeUniformAccess because it might // introduce a uniform buffer for kNumWorkgroups. { raise::ShaderIOConfig config; config.num_workgroups_binding = options.root_constant_binding_point; + config.add_input_position_member = pixel_local_enabled; RUN_TRANSFORM(raise::ShaderIO, module, config); } @@ -178,8 +182,13 @@ // Comes after DecomposeStorageAccess. RUN_TRANSFORM(raise::DecomposeUniformAccess, module); - // TODO(dsinclair): LocalizeStructArrayAssignment - // TODO(dsinclair): PixelLocal transform + // PixelLocal must run after DirectVariableAccess to avoid chasing pointer parameters. + if (pixel_local_enabled) { + raise::PixelLocalConfig config; + config.options = options.pixel_local; + RUN_TRANSFORM(raise::PixelLocal, module, config); + } + // TODO(dsinclair): TruncateInterstageVariables // TODO(dsinclair): CalculateArrayLength
diff --git a/src/tint/lang/hlsl/writer/raise/shader_io.cc b/src/tint/lang/hlsl/writer/raise/shader_io.cc index 3d3ec0a..dc3e420 100644 --- a/src/tint/lang/hlsl/writer/raise/shader_io.cc +++ b/src/tint/lang/hlsl/writer/raise/shader_io.cc
@@ -176,7 +176,16 @@ /// @copydoc ShaderIO::BackendState::FinalizeInputs Vector<core::ir::FunctionParam*, 4> FinalizeInputs() override { - Vector<core::type::Manager::StructMemberDesc, 4> input_struct_members; + if (config.add_input_position_member) { + const bool has_position_member = inputs.Any([](auto& struct_mem_desc) { + return struct_mem_desc.attributes.builtin == core::BuiltinValue::kPosition; + }); + if (!has_position_member) { + core::IOAttributes attrs; + attrs.builtin = core::BuiltinValue::kPosition; + AddInput(ir.symbols.New("pos"), ty.vec4<f32>(), attrs); + } + } Vector<MemberInfo, 4> input_data; for (uint32_t i = 0; i < inputs.Length(); ++i) { @@ -203,6 +212,7 @@ std::sort(input_data.begin(), input_data.end(), [&](auto& x, auto& y) { return StructMemberComparator(x, y); }); + Vector<core::type::Manager::StructMemberDesc, 4> input_struct_members; for (auto& input : input_data) { input_indices[input.idx] = static_cast<uint32_t>(input_struct_members.Length()); input_struct_members.Push(input.member);
diff --git a/src/tint/lang/hlsl/writer/raise/shader_io.h b/src/tint/lang/hlsl/writer/raise/shader_io.h index af0e3e5..96d98e7 100644 --- a/src/tint/lang/hlsl/writer/raise/shader_io.h +++ b/src/tint/lang/hlsl/writer/raise/shader_io.h
@@ -45,9 +45,15 @@ /// no value, a free binding point will be used. Specifically, binding 0 of the largest used /// group plus 1 is used if at least one resource is bound, otherwise group 0 binding 0 is used. std::optional<BindingPoint> num_workgroups_binding; + + /// If one doesn't exist, adds a @position member to the input struct as the last member. + /// This is used for PixelLocal, for which Dawn requires such a member in the final HLSL shader. + bool add_input_position_member = false; }; /// ShaderIO is a transform that prepares entry point inputs and outputs for HLSL codegen. +/// For HLSL, all entry point input parameters are moved to a struct and passed in as a single +/// entry point parameter, and all outputs are wrapped in a struct and returned by the entry point. /// @param module the module to transform /// @returns success or failure Result<SuccessType> ShaderIO(core::ir::Module& module, const ShaderIOConfig& config);
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.dxc.hlsl index 6970257..6dc4598 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,35 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos) { + uint v = tint_f32_to_u32(pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]))); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.fxc.hlsl index 6970257..6dc4598 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,35 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos) { + uint v = tint_f32_to_u32(pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]))); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.dxc.hlsl index 6970257..b4693e2 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,37 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 uv : TEXCOORD0; + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos, float4 uv) { + uint v = tint_f32_to_u32(pos[0u]); + uint v_1 = (v + tint_f32_to_u32(uv[0u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])), inputs.uv); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.fxc.hlsl index 6970257..b4693e2 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,37 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 uv : TEXCOORD0; + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos, float4 uv) { + uint v = tint_f32_to_u32(pos[0u]); + uint v_1 = (v + tint_f32_to_u32(uv[0u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])), inputs.uv); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.dxc.hlsl index 6970257..04e3f7d 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,43 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 uv; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 In_uv : TEXCOORD0; + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos, In tint_symbol) { + uint v = tint_f32_to_u32(pos[0u]); + uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv[0u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + float4 v_3 = float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])); + In v_4 = {inputs.In_uv}; + f_inner(v_3, v_4); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.fxc.hlsl index 6970257..04e3f7d 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,43 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 uv; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 In_uv : TEXCOORD0; + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos, In tint_symbol) { + uint v = tint_f32_to_u32(pos[0u]); + uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv[0u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + float4 v_3 = float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])); + In v_4 = {inputs.In_uv}; + f_inner(v_3, v_4); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.dxc.hlsl index 6970257..86b5a41 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,40 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 pos; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 In_pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol) { + uint v = tint_f32_to_u32(tint_symbol.pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.In_pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))}; + f_inner(v_2); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.fxc.hlsl index 6970257..86b5a41 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,40 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 pos; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 In_pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol) { + uint v = tint_f32_to_u32(tint_symbol.pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.In_pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))}; + f_inner(v_2); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.dxc.hlsl index 6970257..284d705 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,42 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 pos; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 uv : TEXCOORD0; + float4 In_pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol, float4 uv) { + uint v = tint_f32_to_u32(tint_symbol.pos[0u]); + uint v_1 = (v + tint_f32_to_u32(uv[0u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.In_pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))}; + f_inner(v_3, inputs.uv); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.fxc.hlsl index 6970257..284d705 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,42 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 pos; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 uv : TEXCOORD0; + float4 In_pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol, float4 uv) { + uint v = tint_f32_to_u32(tint_symbol.pos[0u]); + uint v_1 = (v + tint_f32_to_u32(uv[0u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.In_pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))}; + f_inner(v_3, inputs.uv); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.dxc.hlsl index 6970257..e1b9950 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,43 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 pos; + float4 uv; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 In_uv : TEXCOORD0; + float4 In_pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol) { + uint v = tint_f32_to_u32(tint_symbol.pos[0u]); + uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv[0u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.In_pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u])), inputs.In_uv}; + f_inner(v_3); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.fxc.hlsl index 6970257..e1b9950 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,43 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 pos; + float4 uv; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 In_uv : TEXCOORD0; + float4 In_pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol) { + uint v = tint_f32_to_u32(tint_symbol.pos[0u]); + uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv[0u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.In_pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u])), inputs.In_uv}; + f_inner(v_3); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl new file mode 100644 index 0000000..669bffc --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl
@@ -0,0 +1,20 @@ +// flags: --pixel_local_attachments 0=1,1=6,2=3 --pixel_local_attachment_formats 0=R32Uint,1=R32Sint,2=R32Float +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +struct In { + @builtin(position) pos : vec4f, + @builtin(front_facing) ff : bool, + @builtin(sample_index) si : u32, +} + +@fragment fn f(in : In) { + P.a += u32(in.pos.x); +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000..f802b3f --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.dxc.hlsl
@@ -0,0 +1,57 @@ +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); + +struct PixelLocal { + uint a; + int b; + float c; +}; + +static PixelLocal P = (PixelLocal)0; + +void load_from_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + P.a = pixel_local_a.Load(rov_texcoord).x; + P.b = pixel_local_b.Load(rov_texcoord).x; + P.c = pixel_local_c.Load(rov_texcoord).x; +} + +void store_into_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + pixel_local_a[rov_texcoord] = uint4((P.a).xxxx); + pixel_local_b[rov_texcoord] = int4((P.b).xxxx); + pixel_local_c[rov_texcoord] = float4((P.c).xxxx); +} + +struct tint_symbol_2 { + float4 pos : SV_Position; + bool ff : SV_IsFrontFace; + uint si : SV_SampleIndex; +}; +struct In { + float4 pos; + bool ff; + uint si; +}; + +uint tint_ftou(float v) { + return ((v <= 4294967040.0f) ? ((v < 0.0f) ? 0u : uint(v)) : 4294967295u); +} + +void f_inner(In tint_symbol) { + P.a = (P.a + tint_ftou(tint_symbol.pos.x)); +} + +void f_inner_1(In tint_symbol) { + float4 hlsl_sv_position = tint_symbol.pos; + load_from_pixel_local_storage(hlsl_sv_position); + f_inner(tint_symbol); + store_into_pixel_local_storage(hlsl_sv_position); +} + +void f(tint_symbol_2 tint_symbol_1) { + In tint_symbol_3 = {float4(tint_symbol_1.pos.xyz, (1.0f / tint_symbol_1.pos.w)), tint_symbol_1.ff, tint_symbol_1.si}; + f_inner_1(tint_symbol_3); + return; +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000..f802b3f --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.fxc.hlsl
@@ -0,0 +1,57 @@ +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); + +struct PixelLocal { + uint a; + int b; + float c; +}; + +static PixelLocal P = (PixelLocal)0; + +void load_from_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + P.a = pixel_local_a.Load(rov_texcoord).x; + P.b = pixel_local_b.Load(rov_texcoord).x; + P.c = pixel_local_c.Load(rov_texcoord).x; +} + +void store_into_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + pixel_local_a[rov_texcoord] = uint4((P.a).xxxx); + pixel_local_b[rov_texcoord] = int4((P.b).xxxx); + pixel_local_c[rov_texcoord] = float4((P.c).xxxx); +} + +struct tint_symbol_2 { + float4 pos : SV_Position; + bool ff : SV_IsFrontFace; + uint si : SV_SampleIndex; +}; +struct In { + float4 pos; + bool ff; + uint si; +}; + +uint tint_ftou(float v) { + return ((v <= 4294967040.0f) ? ((v < 0.0f) ? 0u : uint(v)) : 4294967295u); +} + +void f_inner(In tint_symbol) { + P.a = (P.a + tint_ftou(tint_symbol.pos.x)); +} + +void f_inner_1(In tint_symbol) { + float4 hlsl_sv_position = tint_symbol.pos; + load_from_pixel_local_storage(hlsl_sv_position); + f_inner(tint_symbol); + store_into_pixel_local_storage(hlsl_sv_position); +} + +void f(tint_symbol_2 tint_symbol_1) { + In tint_symbol_3 = {float4(tint_symbol_1.pos.xyz, (1.0f / tint_symbol_1.pos.w)), tint_symbol_1.ff, tint_symbol_1.si}; + f_inner_1(tint_symbol_3); + return; +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.glsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.glsl new file mode 100644 index 0000000..cf7f7f0 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.glsl
@@ -0,0 +1,33 @@ +SKIP: FAILED + + +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +struct In { + @builtin(position) + pos : vec4f, + @builtin(front_facing) + ff : bool, + @builtin(sample_index) + si : u32, +} + +@fragment +fn f(tint_symbol : In) { + P.a += u32(tint_symbol.pos.x); +} + +Failed to generate: C:\src\dawn\test\tint\extensions\pixel_local\entry_point_use\additional_params\builtin_in_struct_multiple.wgsl:2:8 error: GLSL backend does not support extension 'chromium_experimental_pixel_local' +enable chromium_experimental_pixel_local; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.dxc.hlsl new file mode 100644 index 0000000..2baeb4b --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,44 @@ +struct PixelLocal { + uint a; + int b; + float c; +}; + +struct In { + float4 pos; + bool ff; + uint si; +}; + +struct f_inputs { + float4 In_pos : SV_Position; + bool In_ff : SV_IsFrontFace; + uint In_si : SV_SampleIndex; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol) { + uint v = tint_f32_to_u32(tint_symbol.pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.In_pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u])), inputs.In_ff, inputs.In_si}; + f_inner(v_2); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.fxc.hlsl new file mode 100644 index 0000000..2baeb4b --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,44 @@ +struct PixelLocal { + uint a; + int b; + float c; +}; + +struct In { + float4 pos; + bool ff; + uint si; +}; + +struct f_inputs { + float4 In_pos : SV_Position; + bool In_ff : SV_IsFrontFace; + uint In_si : SV_SampleIndex; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol) { + uint v = tint_f32_to_u32(tint_symbol.pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.In_pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u])), inputs.In_ff, inputs.In_si}; + f_inner(v_2); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.glsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.glsl new file mode 100644 index 0000000..d74629c --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.glsl
@@ -0,0 +1,11 @@ +SKIP: FAILED + +..\..\src\tint\lang\glsl\writer\printer\printer.cc:955 internal compiler error: TINT_UNREACHABLE PixelLocal not supported +******************************************************************** +* The tint shader compiler has encountered an unexpected error. * +* * +* Please help us fix this issue by submitting a bug report at * +* crbug.com/tint with the source program that triggered the bug. * +******************************************************************** + +tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.msl new file mode 100644 index 0000000..9996c1e --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@ +SKIP: FAILED + +..\..\src\tint\lang\msl\writer\raise\module_scope_vars.cc:239 internal compiler error: TINT_UNREACHABLE unhandled address space: pixel_local +******************************************************************** +* The tint shader compiler has encountered an unexpected error. * +* * +* Please help us fix this issue by submitting a bug report at * +* crbug.com/tint with the source program that triggered the bug. * +******************************************************************** + +tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.msl new file mode 100644 index 0000000..ddab48d --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.msl
@@ -0,0 +1,64 @@ +#include <metal_stdlib> + +using namespace metal; +struct PixelLocal { + uint a; + int b; + float c; +}; + +struct tint_private_vars_struct { + PixelLocal P; +}; + +struct f_res { + uint output_0; + int output_1; + float output_2; +}; + +struct tint_symbol_1 { + uint a [[color(1)]]; + float c [[color(3)]]; + int b [[color(6)]]; +}; + +struct tint_symbol_2 { + uint output_0 [[color(1)]]; + float output_2 [[color(3)]]; + int output_1 [[color(6)]]; +}; + +struct In { + float4 pos; + bool ff; + uint si; +}; + +uint tint_ftou(float v) { + return select(4294967295u, select(uint(v), 0u, (v < 0.0f)), (v <= 4294967040.0f)); +} + +void f_inner(In in, thread tint_private_vars_struct* const tint_private_vars) { + (*(tint_private_vars)).P.a = ((*(tint_private_vars)).P.a + tint_ftou(in.pos[0])); +} + +f_res f_inner_1(In in, PixelLocal pixel_local_1, thread tint_private_vars_struct* const tint_private_vars) { + (*(tint_private_vars)).P = pixel_local_1; + f_inner(in, tint_private_vars); + f_res const tint_symbol_5 = {.output_0=(*(tint_private_vars)).P.a, .output_1=(*(tint_private_vars)).P.b, .output_2=(*(tint_private_vars)).P.c}; + return tint_symbol_5; +} + +fragment tint_symbol_2 f(float4 pos [[position]], bool ff [[front_facing]], uint si [[sample_id]], tint_symbol_1 tint_symbol [[stage_in]]) { + thread tint_private_vars_struct tint_private_vars = {}; + In const tint_symbol_3 = {.pos=pos, .ff=ff, .si=si}; + PixelLocal const tint_symbol_4 = {.a=tint_symbol.a, .b=tint_symbol.b, .c=tint_symbol.c}; + f_res const inner_result = f_inner_1(tint_symbol_3, tint_symbol_4, &(tint_private_vars)); + tint_symbol_2 wrapper_result = {}; + wrapper_result.output_0 = inner_result.output_0; + wrapper_result.output_1 = inner_result.output_1; + wrapper_result.output_2 = inner_result.output_2; + return wrapper_result; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.spvasm b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.spvasm new file mode 100644 index 0000000..b33d409 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.spvasm
@@ -0,0 +1,11 @@ +SKIP: FAILED + +..\..\src\tint\lang\spirv\writer\printer\printer.cc:2367 internal compiler error: unimplemented variable address space pixel_local +******************************************************************** +* The tint shader compiler has encountered an unexpected error. * +* * +* Please help us fix this issue by submitting a bug report at * +* crbug.com/tint with the source program that triggered the bug. * +******************************************************************** + +tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.wgsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.wgsl new file mode 100644 index 0000000..b8e425d --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.wgsl
@@ -0,0 +1,23 @@ +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +struct In { + @builtin(position) + pos : vec4f, + @builtin(front_facing) + ff : bool, + @builtin(sample_index) + si : u32, +} + +@fragment +fn f(in : In) { + P.a += u32(in.pos.x); +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl new file mode 100644 index 0000000..c6fb760 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl
@@ -0,0 +1,14 @@ +// flags: --pixel_local_attachments 0=1,1=6,2=3 --pixel_local_attachment_formats 0=R32Uint,1=R32Sint,2=R32Float +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +@fragment fn f(@builtin(position) pos : vec4f, @builtin(front_facing) ff : bool, @builtin(sample_index) si : u32) { + P.a += u32(pos.x); +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000..d706b08 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.dxc.hlsl
@@ -0,0 +1,51 @@ +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); + +struct PixelLocal { + uint a; + int b; + float c; +}; + +static PixelLocal P = (PixelLocal)0; + +void load_from_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + P.a = pixel_local_a.Load(rov_texcoord).x; + P.b = pixel_local_b.Load(rov_texcoord).x; + P.c = pixel_local_c.Load(rov_texcoord).x; +} + +void store_into_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + pixel_local_a[rov_texcoord] = uint4((P.a).xxxx); + pixel_local_b[rov_texcoord] = int4((P.b).xxxx); + pixel_local_c[rov_texcoord] = float4((P.c).xxxx); +} + +struct tint_symbol_1 { + float4 pos : SV_Position; + bool ff : SV_IsFrontFace; + uint si : SV_SampleIndex; +}; + +uint tint_ftou(float v) { + return ((v <= 4294967040.0f) ? ((v < 0.0f) ? 0u : uint(v)) : 4294967295u); +} + +void f_inner(float4 pos, bool ff, uint si) { + P.a = (P.a + tint_ftou(pos.x)); +} + +void f_inner_1(float4 pos, bool ff, uint si) { + float4 hlsl_sv_position = pos; + load_from_pixel_local_storage(hlsl_sv_position); + f_inner(pos, ff, si); + store_into_pixel_local_storage(hlsl_sv_position); +} + +void f(tint_symbol_1 tint_symbol) { + f_inner_1(float4(tint_symbol.pos.xyz, (1.0f / tint_symbol.pos.w)), tint_symbol.ff, tint_symbol.si); + return; +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000..d706b08 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.fxc.hlsl
@@ -0,0 +1,51 @@ +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); + +struct PixelLocal { + uint a; + int b; + float c; +}; + +static PixelLocal P = (PixelLocal)0; + +void load_from_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + P.a = pixel_local_a.Load(rov_texcoord).x; + P.b = pixel_local_b.Load(rov_texcoord).x; + P.c = pixel_local_c.Load(rov_texcoord).x; +} + +void store_into_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + pixel_local_a[rov_texcoord] = uint4((P.a).xxxx); + pixel_local_b[rov_texcoord] = int4((P.b).xxxx); + pixel_local_c[rov_texcoord] = float4((P.c).xxxx); +} + +struct tint_symbol_1 { + float4 pos : SV_Position; + bool ff : SV_IsFrontFace; + uint si : SV_SampleIndex; +}; + +uint tint_ftou(float v) { + return ((v <= 4294967040.0f) ? ((v < 0.0f) ? 0u : uint(v)) : 4294967295u); +} + +void f_inner(float4 pos, bool ff, uint si) { + P.a = (P.a + tint_ftou(pos.x)); +} + +void f_inner_1(float4 pos, bool ff, uint si) { + float4 hlsl_sv_position = pos; + load_from_pixel_local_storage(hlsl_sv_position); + f_inner(pos, ff, si); + store_into_pixel_local_storage(hlsl_sv_position); +} + +void f(tint_symbol_1 tint_symbol) { + f_inner_1(float4(tint_symbol.pos.xyz, (1.0f / tint_symbol.pos.w)), tint_symbol.ff, tint_symbol.si); + return; +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.glsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.glsl new file mode 100644 index 0000000..6451031 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.glsl
@@ -0,0 +1,24 @@ +SKIP: FAILED + + +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +@fragment +fn f(@builtin(position) pos : vec4f, @builtin(front_facing) ff : bool, @builtin(sample_index) si : u32) { + P.a += u32(pos.x); +} + +Failed to generate: C:\src\dawn\test\tint\extensions\pixel_local\entry_point_use\additional_params\builtin_multiple.wgsl:2:8 error: GLSL backend does not support extension 'chromium_experimental_pixel_local' +enable chromium_experimental_pixel_local; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.dxc.hlsl new file mode 100644 index 0000000..13e9667 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,37 @@ +struct PixelLocal { + uint a; + int b; + float c; +}; + +struct f_inputs { + float4 pos : SV_Position; + bool ff : SV_IsFrontFace; + uint si : SV_SampleIndex; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos, bool ff, uint si) { + uint v = tint_f32_to_u32(pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])), inputs.ff, inputs.si); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.fxc.hlsl new file mode 100644 index 0000000..13e9667 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,37 @@ +struct PixelLocal { + uint a; + int b; + float c; +}; + +struct f_inputs { + float4 pos : SV_Position; + bool ff : SV_IsFrontFace; + uint si : SV_SampleIndex; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos, bool ff, uint si) { + uint v = tint_f32_to_u32(pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])), inputs.ff, inputs.si); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.glsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.glsl new file mode 100644 index 0000000..d74629c --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.glsl
@@ -0,0 +1,11 @@ +SKIP: FAILED + +..\..\src\tint\lang\glsl\writer\printer\printer.cc:955 internal compiler error: TINT_UNREACHABLE PixelLocal not supported +******************************************************************** +* The tint shader compiler has encountered an unexpected error. * +* * +* Please help us fix this issue by submitting a bug report at * +* crbug.com/tint with the source program that triggered the bug. * +******************************************************************** + +tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.msl new file mode 100644 index 0000000..9996c1e --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@ +SKIP: FAILED + +..\..\src\tint\lang\msl\writer\raise\module_scope_vars.cc:239 internal compiler error: TINT_UNREACHABLE unhandled address space: pixel_local +******************************************************************** +* The tint shader compiler has encountered an unexpected error. * +* * +* Please help us fix this issue by submitting a bug report at * +* crbug.com/tint with the source program that triggered the bug. * +******************************************************************** + +tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.msl new file mode 100644 index 0000000..c2f7c39 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.msl
@@ -0,0 +1,57 @@ +#include <metal_stdlib> + +using namespace metal; +struct PixelLocal { + uint a; + int b; + float c; +}; + +struct tint_private_vars_struct { + PixelLocal P; +}; + +struct f_res { + uint output_0; + int output_1; + float output_2; +}; + +struct tint_symbol_1 { + uint a [[color(1)]]; + float c [[color(3)]]; + int b [[color(6)]]; +}; + +struct tint_symbol_2 { + uint output_0 [[color(1)]]; + float output_2 [[color(3)]]; + int output_1 [[color(6)]]; +}; + +uint tint_ftou(float v) { + return select(4294967295u, select(uint(v), 0u, (v < 0.0f)), (v <= 4294967040.0f)); +} + +void f_inner(float4 pos, bool ff, uint si, thread tint_private_vars_struct* const tint_private_vars) { + (*(tint_private_vars)).P.a = ((*(tint_private_vars)).P.a + tint_ftou(pos[0])); +} + +f_res f_inner_1(float4 pos, bool ff, uint si, PixelLocal pixel_local_1, thread tint_private_vars_struct* const tint_private_vars) { + (*(tint_private_vars)).P = pixel_local_1; + f_inner(pos, ff, si, tint_private_vars); + f_res const tint_symbol_4 = {.output_0=(*(tint_private_vars)).P.a, .output_1=(*(tint_private_vars)).P.b, .output_2=(*(tint_private_vars)).P.c}; + return tint_symbol_4; +} + +fragment tint_symbol_2 f(float4 pos [[position]], bool ff [[front_facing]], uint si [[sample_id]], tint_symbol_1 tint_symbol [[stage_in]]) { + thread tint_private_vars_struct tint_private_vars = {}; + PixelLocal const tint_symbol_3 = {.a=tint_symbol.a, .b=tint_symbol.b, .c=tint_symbol.c}; + f_res const inner_result = f_inner_1(pos, ff, si, tint_symbol_3, &(tint_private_vars)); + tint_symbol_2 wrapper_result = {}; + wrapper_result.output_0 = inner_result.output_0; + wrapper_result.output_1 = inner_result.output_1; + wrapper_result.output_2 = inner_result.output_2; + return wrapper_result; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.spvasm b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.spvasm new file mode 100644 index 0000000..b33d409 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.spvasm
@@ -0,0 +1,11 @@ +SKIP: FAILED + +..\..\src\tint\lang\spirv\writer\printer\printer.cc:2367 internal compiler error: unimplemented variable address space pixel_local +******************************************************************** +* The tint shader compiler has encountered an unexpected error. * +* * +* Please help us fix this issue by submitting a bug report at * +* crbug.com/tint with the source program that triggered the bug. * +******************************************************************** + +tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.wgsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.wgsl new file mode 100644 index 0000000..6cf0f2d --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.wgsl
@@ -0,0 +1,14 @@ +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +@fragment +fn f(@builtin(position) pos : vec4f, @builtin(front_facing) ff : bool, @builtin(sample_index) si : u32) { + P.a += u32(pos.x); +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl new file mode 100644 index 0000000..2507ae6 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl
@@ -0,0 +1,22 @@ +// flags: --pixel_local_attachments 0=1,1=6,2=3 --pixel_local_attachment_formats 0=R32Uint,1=R32Sint,2=R32Float +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +@fragment fn f(@builtin(position) pos : vec4f) { + P.a += u32(pos.x); +} + +@fragment fn f2(@builtin(position) pos : vec4f) { + P.b += i32(pos.x); +} + +@fragment fn f3(@builtin(position) pos : vec4f) { + P.c += pos.x; +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000..7004767 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.dxc.hlsl
@@ -0,0 +1,79 @@ +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); + +struct PixelLocal { + uint a; + int b; + float c; +}; + +static PixelLocal P = (PixelLocal)0; + +void load_from_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + P.a = pixel_local_a.Load(rov_texcoord).x; + P.b = pixel_local_b.Load(rov_texcoord).x; + P.c = pixel_local_c.Load(rov_texcoord).x; +} + +void store_into_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + pixel_local_a[rov_texcoord] = uint4((P.a).xxxx); + pixel_local_b[rov_texcoord] = int4((P.b).xxxx); + pixel_local_c[rov_texcoord] = float4((P.c).xxxx); +} + +struct tint_symbol_1 { + float4 pos : SV_Position; +}; + +uint tint_ftou(float v) { + return ((v <= 4294967040.0f) ? ((v < 0.0f) ? 0u : uint(v)) : 4294967295u); +} + +void f_inner(float4 pos) { + P.a = (P.a + tint_ftou(pos.x)); +} + +void f_inner_1(float4 pos) { + float4 hlsl_sv_position = pos; + load_from_pixel_local_storage(hlsl_sv_position); + f_inner(pos); + store_into_pixel_local_storage(hlsl_sv_position); +} + +void f(tint_symbol_1 tint_symbol) { + f_inner_1(float4(tint_symbol.pos.xyz, (1.0f / tint_symbol.pos.w))); + return; +} + +int tint_ftoi(float v) { + return ((v <= 2147483520.0f) ? ((v < -2147483648.0f) ? -2147483648 : int(v)) : 2147483647); +} + +struct tint_symbol_3 { + float4 pos : SV_Position; +}; + +void f2_inner(float4 pos) { + P.b = (P.b + tint_ftoi(pos.x)); +} + +void f2(tint_symbol_3 tint_symbol_2) { + f2_inner(float4(tint_symbol_2.pos.xyz, (1.0f / tint_symbol_2.pos.w))); + return; +} + +struct tint_symbol_5 { + float4 pos : SV_Position; +}; + +void f3_inner(float4 pos) { + P.c = (P.c + pos.x); +} + +void f3(tint_symbol_5 tint_symbol_4) { + f3_inner(float4(tint_symbol_4.pos.xyz, (1.0f / tint_symbol_4.pos.w))); + return; +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000..7004767 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.fxc.hlsl
@@ -0,0 +1,79 @@ +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); + +struct PixelLocal { + uint a; + int b; + float c; +}; + +static PixelLocal P = (PixelLocal)0; + +void load_from_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + P.a = pixel_local_a.Load(rov_texcoord).x; + P.b = pixel_local_b.Load(rov_texcoord).x; + P.c = pixel_local_c.Load(rov_texcoord).x; +} + +void store_into_pixel_local_storage(float4 my_input) { + uint2 rov_texcoord = uint2(my_input.xy); + pixel_local_a[rov_texcoord] = uint4((P.a).xxxx); + pixel_local_b[rov_texcoord] = int4((P.b).xxxx); + pixel_local_c[rov_texcoord] = float4((P.c).xxxx); +} + +struct tint_symbol_1 { + float4 pos : SV_Position; +}; + +uint tint_ftou(float v) { + return ((v <= 4294967040.0f) ? ((v < 0.0f) ? 0u : uint(v)) : 4294967295u); +} + +void f_inner(float4 pos) { + P.a = (P.a + tint_ftou(pos.x)); +} + +void f_inner_1(float4 pos) { + float4 hlsl_sv_position = pos; + load_from_pixel_local_storage(hlsl_sv_position); + f_inner(pos); + store_into_pixel_local_storage(hlsl_sv_position); +} + +void f(tint_symbol_1 tint_symbol) { + f_inner_1(float4(tint_symbol.pos.xyz, (1.0f / tint_symbol.pos.w))); + return; +} + +int tint_ftoi(float v) { + return ((v <= 2147483520.0f) ? ((v < -2147483648.0f) ? -2147483648 : int(v)) : 2147483647); +} + +struct tint_symbol_3 { + float4 pos : SV_Position; +}; + +void f2_inner(float4 pos) { + P.b = (P.b + tint_ftoi(pos.x)); +} + +void f2(tint_symbol_3 tint_symbol_2) { + f2_inner(float4(tint_symbol_2.pos.xyz, (1.0f / tint_symbol_2.pos.w))); + return; +} + +struct tint_symbol_5 { + float4 pos : SV_Position; +}; + +void f3_inner(float4 pos) { + P.c = (P.c + pos.x); +} + +void f3(tint_symbol_5 tint_symbol_4) { + f3_inner(float4(tint_symbol_4.pos.xyz, (1.0f / tint_symbol_4.pos.w))); + return; +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.glsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.glsl new file mode 100644 index 0000000..98600db --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.glsl
@@ -0,0 +1,94 @@ +SKIP: FAILED + + +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +@fragment +fn f(@builtin(position) pos : vec4f) { + P.a += u32(pos.x); +} + +@fragment +fn f2(@builtin(position) pos : vec4f) { + P.b += i32(pos.x); +} + +@fragment +fn f3(@builtin(position) pos : vec4f) { + P.c += pos.x; +} + +Failed to generate: C:\src\dawn\test\tint\extensions\pixel_local\entry_point_use\additional_params\builtin_multiple_entry_points.wgsl:2:8 error: GLSL backend does not support extension 'chromium_experimental_pixel_local' +enable chromium_experimental_pixel_local; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +@fragment +fn f(@builtin(position) pos : vec4f) { + P.a += u32(pos.x); +} + +@fragment +fn f2(@builtin(position) pos : vec4f) { + P.b += i32(pos.x); +} + +@fragment +fn f3(@builtin(position) pos : vec4f) { + P.c += pos.x; +} + +Failed to generate: C:\src\dawn\test\tint\extensions\pixel_local\entry_point_use\additional_params\builtin_multiple_entry_points.wgsl:2:8 error: GLSL backend does not support extension 'chromium_experimental_pixel_local' +enable chromium_experimental_pixel_local; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +@fragment +fn f(@builtin(position) pos : vec4f) { + P.a += u32(pos.x); +} + +@fragment +fn f2(@builtin(position) pos : vec4f) { + P.b += i32(pos.x); +} + +@fragment +fn f3(@builtin(position) pos : vec4f) { + P.c += pos.x; +} + +Failed to generate: C:\src\dawn\test\tint\extensions\pixel_local\entry_point_use\additional_params\builtin_multiple_entry_points.wgsl:2:8 error: GLSL backend does not support extension 'chromium_experimental_pixel_local' +enable chromium_experimental_pixel_local; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.dxc.hlsl new file mode 100644 index 0000000..e2dd2e2 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,78 @@ +struct PixelLocal { + uint a; + int b; + float c; +}; + +struct f_inputs { + float4 pos : SV_Position; +}; + +struct f2_inputs { + float4 pos : SV_Position; +}; + +struct f3_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos) { + uint v = tint_f32_to_u32(pos[0u]); + P.a = (P.a + v); +} + +int tint_f32_to_i32(float value) { + return (((value <= 2147483520.0f)) ? ((((value >= -2147483648.0f)) ? (int(value)) : (int(-2147483648)))) : (int(2147483647))); +} + +void f2_inner(float4 pos) { + int v_1 = tint_f32_to_i32(pos[0u]); + P.b = (P.b + v_1); +} + +void f3_inner(float4 pos) { + P.c = (P.c + pos[0u]); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]))); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} + +void f2(f2_inputs inputs) { + uint2 v_3 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_3).x; + P.b = pixel_local_b.Load(v_3).x; + P.c = pixel_local_c.Load(v_3).x; + f2_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]))); + pixel_local_a[v_3] = P.a.xxxx; + pixel_local_b[v_3] = P.b.xxxx; + pixel_local_c[v_3] = P.c.xxxx; +} + +void f3(f3_inputs inputs) { + uint2 v_4 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_4).x; + P.b = pixel_local_b.Load(v_4).x; + P.c = pixel_local_c.Load(v_4).x; + f3_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]))); + pixel_local_a[v_4] = P.a.xxxx; + pixel_local_b[v_4] = P.b.xxxx; + pixel_local_c[v_4] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.fxc.hlsl new file mode 100644 index 0000000..e2dd2e2 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,78 @@ +struct PixelLocal { + uint a; + int b; + float c; +}; + +struct f_inputs { + float4 pos : SV_Position; +}; + +struct f2_inputs { + float4 pos : SV_Position; +}; + +struct f3_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos) { + uint v = tint_f32_to_u32(pos[0u]); + P.a = (P.a + v); +} + +int tint_f32_to_i32(float value) { + return (((value <= 2147483520.0f)) ? ((((value >= -2147483648.0f)) ? (int(value)) : (int(-2147483648)))) : (int(2147483647))); +} + +void f2_inner(float4 pos) { + int v_1 = tint_f32_to_i32(pos[0u]); + P.b = (P.b + v_1); +} + +void f3_inner(float4 pos) { + P.c = (P.c + pos[0u]); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]))); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} + +void f2(f2_inputs inputs) { + uint2 v_3 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_3).x; + P.b = pixel_local_b.Load(v_3).x; + P.c = pixel_local_c.Load(v_3).x; + f2_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]))); + pixel_local_a[v_3] = P.a.xxxx; + pixel_local_b[v_3] = P.b.xxxx; + pixel_local_c[v_3] = P.c.xxxx; +} + +void f3(f3_inputs inputs) { + uint2 v_4 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_4).x; + P.b = pixel_local_b.Load(v_4).x; + P.c = pixel_local_c.Load(v_4).x; + f3_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]))); + pixel_local_a[v_4] = P.a.xxxx; + pixel_local_b[v_4] = P.b.xxxx; + pixel_local_c[v_4] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.glsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.glsl new file mode 100644 index 0000000..d74629c --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.glsl
@@ -0,0 +1,11 @@ +SKIP: FAILED + +..\..\src\tint\lang\glsl\writer\printer\printer.cc:955 internal compiler error: TINT_UNREACHABLE PixelLocal not supported +******************************************************************** +* The tint shader compiler has encountered an unexpected error. * +* * +* Please help us fix this issue by submitting a bug report at * +* crbug.com/tint with the source program that triggered the bug. * +******************************************************************** + +tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.msl new file mode 100644 index 0000000..9996c1e --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@ +SKIP: FAILED + +..\..\src\tint\lang\msl\writer\raise\module_scope_vars.cc:239 internal compiler error: TINT_UNREACHABLE unhandled address space: pixel_local +******************************************************************** +* The tint shader compiler has encountered an unexpected error. * +* * +* Please help us fix this issue by submitting a bug report at * +* crbug.com/tint with the source program that triggered the bug. * +******************************************************************** + +tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.msl new file mode 100644 index 0000000..20d530f --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.msl
@@ -0,0 +1,141 @@ +#include <metal_stdlib> + +using namespace metal; +struct PixelLocal { + uint a; + int b; + float c; +}; + +struct tint_private_vars_struct { + PixelLocal P; +}; + +struct f_res { + uint output_0; + int output_1; + float output_2; +}; + +struct tint_symbol_1 { + uint a [[color(1)]]; + float c [[color(3)]]; + int b [[color(6)]]; +}; + +struct tint_symbol_2 { + uint output_0 [[color(1)]]; + float output_2 [[color(3)]]; + int output_1 [[color(6)]]; +}; + +uint tint_ftou(float v) { + return select(4294967295u, select(uint(v), 0u, (v < 0.0f)), (v <= 4294967040.0f)); +} + +void f_inner(float4 pos, thread tint_private_vars_struct* const tint_private_vars) { + (*(tint_private_vars)).P.a = ((*(tint_private_vars)).P.a + tint_ftou(pos[0])); +} + +f_res f_inner_1(float4 pos, PixelLocal pixel_local_1, thread tint_private_vars_struct* const tint_private_vars) { + (*(tint_private_vars)).P = pixel_local_1; + f_inner(pos, tint_private_vars); + f_res const tint_symbol_10 = {.output_0=(*(tint_private_vars)).P.a, .output_1=(*(tint_private_vars)).P.b, .output_2=(*(tint_private_vars)).P.c}; + return tint_symbol_10; +} + +fragment tint_symbol_2 f(float4 pos [[position]], tint_symbol_1 tint_symbol [[stage_in]]) { + thread tint_private_vars_struct tint_private_vars = {}; + PixelLocal const tint_symbol_9 = {.a=tint_symbol.a, .b=tint_symbol.b, .c=tint_symbol.c}; + f_res const inner_result = f_inner_1(pos, tint_symbol_9, &(tint_private_vars)); + tint_symbol_2 wrapper_result = {}; + wrapper_result.output_0 = inner_result.output_0; + wrapper_result.output_1 = inner_result.output_1; + wrapper_result.output_2 = inner_result.output_2; + return wrapper_result; +} + +struct f2_res { + uint output_0; + int output_1; + float output_2; +}; + +struct tint_symbol_4 { + uint a [[color(1)]]; + float c [[color(3)]]; + int b [[color(6)]]; +}; + +struct tint_symbol_5 { + uint output_0 [[color(1)]]; + float output_2 [[color(3)]]; + int output_1 [[color(6)]]; +}; + +int tint_ftoi(float v) { + return select(2147483647, select(int(v), (-2147483647 - 1), (v < -2147483648.0f)), (v <= 2147483520.0f)); +} + +void f2_inner(float4 pos, thread tint_private_vars_struct* const tint_private_vars) { + (*(tint_private_vars)).P.b = as_type<int>((as_type<uint>((*(tint_private_vars)).P.b) + as_type<uint>(tint_ftoi(pos[0])))); +} + +f2_res f2_inner_1(float4 pos, PixelLocal pixel_local_2, thread tint_private_vars_struct* const tint_private_vars) { + (*(tint_private_vars)).P = pixel_local_2; + f2_inner(pos, tint_private_vars); + f2_res const tint_symbol_12 = {.output_0=(*(tint_private_vars)).P.a, .output_1=(*(tint_private_vars)).P.b, .output_2=(*(tint_private_vars)).P.c}; + return tint_symbol_12; +} + +fragment tint_symbol_5 f2(float4 pos [[position]], tint_symbol_4 tint_symbol_3 [[stage_in]]) { + thread tint_private_vars_struct tint_private_vars = {}; + PixelLocal const tint_symbol_11 = {.a=tint_symbol_3.a, .b=tint_symbol_3.b, .c=tint_symbol_3.c}; + f2_res const inner_result_1 = f2_inner_1(pos, tint_symbol_11, &(tint_private_vars)); + tint_symbol_5 wrapper_result_1 = {}; + wrapper_result_1.output_0 = inner_result_1.output_0; + wrapper_result_1.output_1 = inner_result_1.output_1; + wrapper_result_1.output_2 = inner_result_1.output_2; + return wrapper_result_1; +} + +struct f3_res { + uint output_0; + int output_1; + float output_2; +}; + +struct tint_symbol_7 { + uint a [[color(1)]]; + float c [[color(3)]]; + int b [[color(6)]]; +}; + +struct tint_symbol_8 { + uint output_0 [[color(1)]]; + float output_2 [[color(3)]]; + int output_1 [[color(6)]]; +}; + +void f3_inner(float4 pos, thread tint_private_vars_struct* const tint_private_vars) { + (*(tint_private_vars)).P.c = ((*(tint_private_vars)).P.c + pos[0]); +} + +f3_res f3_inner_1(float4 pos, PixelLocal pixel_local_3, thread tint_private_vars_struct* const tint_private_vars) { + (*(tint_private_vars)).P = pixel_local_3; + f3_inner(pos, tint_private_vars); + f3_res const tint_symbol_14 = {.output_0=(*(tint_private_vars)).P.a, .output_1=(*(tint_private_vars)).P.b, .output_2=(*(tint_private_vars)).P.c}; + return tint_symbol_14; +} + +fragment tint_symbol_8 f3(float4 pos [[position]], tint_symbol_7 tint_symbol_6 [[stage_in]]) { + thread tint_private_vars_struct tint_private_vars = {}; + PixelLocal const tint_symbol_13 = {.a=tint_symbol_6.a, .b=tint_symbol_6.b, .c=tint_symbol_6.c}; + f3_res const inner_result_2 = f3_inner_1(pos, tint_symbol_13, &(tint_private_vars)); + tint_symbol_8 wrapper_result_2 = {}; + wrapper_result_2.output_0 = inner_result_2.output_0; + wrapper_result_2.output_1 = inner_result_2.output_1; + wrapper_result_2.output_2 = inner_result_2.output_2; + return wrapper_result_2; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.spvasm b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.spvasm new file mode 100644 index 0000000..b33d409 --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.spvasm
@@ -0,0 +1,11 @@ +SKIP: FAILED + +..\..\src\tint\lang\spirv\writer\printer\printer.cc:2367 internal compiler error: unimplemented variable address space pixel_local +******************************************************************** +* The tint shader compiler has encountered an unexpected error. * +* * +* Please help us fix this issue by submitting a bug report at * +* crbug.com/tint with the source program that triggered the bug. * +******************************************************************** + +tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.wgsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.wgsl new file mode 100644 index 0000000..b419b4c --- /dev/null +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.wgsl
@@ -0,0 +1,24 @@ +enable chromium_experimental_pixel_local; + +struct PixelLocal { + a : u32, + b : i32, + c : f32, +} + +var<pixel_local> P : PixelLocal; + +@fragment +fn f(@builtin(position) pos : vec4f) { + P.a += u32(pos.x); +} + +@fragment +fn f2(@builtin(position) pos : vec4f) { + P.b += i32(pos.x); +} + +@fragment +fn f3(@builtin(position) pos : vec4f) { + P.c += pos.x; +}
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.dxc.hlsl index 6970257..985615e 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,35 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + precise float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos) { + uint v = tint_f32_to_u32(pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]))); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.fxc.hlsl index 6970257..985615e 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,35 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + precise float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 pos) { + uint v = tint_f32_to_u32(pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]))); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.dxc.hlsl index 6970257..198bd7a 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,40 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 pos; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + precise float4 In_pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol) { + uint v = tint_f32_to_u32(tint_symbol.pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.In_pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))}; + f_inner(v_2); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.fxc.hlsl index 6970257..198bd7a 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,40 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 pos; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + precise float4 In_pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol) { + uint v = tint_f32_to_u32(tint_symbol.pos[0u]); + P.a = (P.a + v); +} + +void f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.In_pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))}; + f_inner(v_2); + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.dxc.hlsl index 6970257..3c70bd6 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,38 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 a : TEXCOORD0; + nointerpolation float4 b : TEXCOORD1; + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 a, float4 b) { + uint v = tint_f32_to_u32(a[0u]); + uint v_1 = (v + tint_f32_to_u32(b[1u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + f_inner(inputs.a, inputs.b); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.fxc.hlsl index 6970257..3c70bd6 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,38 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 a : TEXCOORD0; + nointerpolation float4 b : TEXCOORD1; + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(float4 a, float4 b) { + uint v = tint_f32_to_u32(a[0u]); + uint v_1 = (v + tint_f32_to_u32(b[1u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + f_inner(inputs.a, inputs.b); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.dxc.hlsl index 6970257..f19ea10 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,44 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 a; + float4 b; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 In_a : TEXCOORD0; + nointerpolation float4 In_b : TEXCOORD1; + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol) { + uint v = tint_f32_to_u32(tint_symbol.a[0u]); + uint v_1 = (v + tint_f32_to_u32(tint_symbol.b[1u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + In v_3 = {inputs.In_a, inputs.In_b}; + f_inner(v_3); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.fxc.hlsl index 6970257..f19ea10 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,44 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct In { + float4 a; + float4 b; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 In_a : TEXCOORD0; + nointerpolation float4 In_b : TEXCOORD1; + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +uint tint_f32_to_u32(float value) { + return (((value <= 4294967040.0f)) ? ((((value >= 0.0f)) ? (uint(value)) : (0u))) : (4294967295u)); +} + +void f_inner(In tint_symbol) { + uint v = tint_f32_to_u32(tint_symbol.a[0u]); + uint v_1 = (v + tint_f32_to_u32(tint_symbol.b[1u])); + P.a = (P.a + v_1); +} + +void f(f_inputs inputs) { + uint2 v_2 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_2).x; + P.b = pixel_local_b.Load(v_2).x; + P.c = pixel_local_c.Load(v_2).x; + In v_3 = {inputs.In_a, inputs.In_b}; + f_inner(v_3); + pixel_local_a[v_2] = P.a.xxxx; + pixel_local_b[v_2] = P.b.xxxx; + pixel_local_c[v_2] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl index 6970257..217383e 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,50 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct Out { + float4 x; + float4 y; + float4 z; +}; -tint executable returned error: exit status 0xc000001d +struct f_outputs { + float4 Out_x : SV_Target0; + float4 Out_y : SV_Target2; + float4 Out_z : SV_Target4; +}; + +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +Out f_inner() { + P.a = (P.a + 42u); + Out v = {(10.0f).xxxx, (20.0f).xxxx, (30.0f).xxxx}; + return v; +} + +f_outputs f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + Out v_2 = f_inner(); + Out v_3 = v_2; + Out v_4 = v_2; + Out v_5 = v_2; + f_outputs v_6 = {v_3.x, v_4.y, v_5.z}; + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; + f_outputs v_7 = v_6; + return v_7; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl index 6970257..217383e 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,50 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct Out { + float4 x; + float4 y; + float4 z; +}; -tint executable returned error: exit status 0xc000001d +struct f_outputs { + float4 Out_x : SV_Target0; + float4 Out_y : SV_Target2; + float4 Out_z : SV_Target4; +}; + +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +Out f_inner() { + P.a = (P.a + 42u); + Out v = {(10.0f).xxxx, (20.0f).xxxx, (30.0f).xxxx}; + return v; +} + +f_outputs f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + Out v_2 = f_inner(); + Out v_3 = v_2; + Out v_4 = v_2; + Out v_5 = v_2; + f_outputs v_6 = {v_3.x, v_4.y, v_5.z}; + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; + f_outputs v_7 = v_6; + return v_7; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl index 6970257..d00e754 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,42 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct Out { + float4 x; + float4 y; + float4 z; +}; -tint executable returned error: exit status 0xc000001d +struct f_outputs { + float4 Out_x : SV_Target0; + float4 Out_y : SV_Target2; + float4 Out_z : SV_Target3; +}; + +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +Out f_inner() { + P.a = (P.a + 42u); + Out v = {(10.0f).xxxx, (20.0f).xxxx, (30.0f).xxxx}; + return v; +} + +f_outputs f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + Out v_2 = f_inner(); + Out v_3 = v_2; + Out v_4 = v_2; + Out v_5 = v_2; + f_outputs v_6 = {v_3.x, v_4.y, v_5.z}; + pixel_local_a[v_1] = P.a.xxxx; + f_outputs v_7 = v_6; + return v_7; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl index 6970257..d00e754 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,42 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct Out { + float4 x; + float4 y; + float4 z; +}; -tint executable returned error: exit status 0xc000001d +struct f_outputs { + float4 Out_x : SV_Target0; + float4 Out_y : SV_Target2; + float4 Out_z : SV_Target3; +}; + +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +Out f_inner() { + P.a = (P.a + 42u); + Out v = {(10.0f).xxxx, (20.0f).xxxx, (30.0f).xxxx}; + return v; +} + +f_outputs f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + Out v_2 = f_inner(); + Out v_3 = v_2; + Out v_4 = v_2; + Out v_5 = v_2; + f_outputs v_6 = {v_3.x, v_4.y, v_5.z}; + pixel_local_a[v_1] = P.a.xxxx; + f_outputs v_7 = v_6; + return v_7; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.dxc.hlsl index 6970257..5439b04 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,37 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_outputs { + float4 tint_symbol : SV_Target0; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +float4 f_inner() { + P.a = (P.a + 42u); + return (2.0f).xxxx; +} + +f_outputs f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + P.b = pixel_local_b.Load(v).x; + P.c = pixel_local_c.Load(v).x; + f_outputs v_1 = {f_inner()}; + pixel_local_a[v] = P.a.xxxx; + pixel_local_b[v] = P.b.xxxx; + pixel_local_c[v] = P.c.xxxx; + f_outputs v_2 = v_1; + return v_2; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.fxc.hlsl index 6970257..5439b04 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,37 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_outputs { + float4 tint_symbol : SV_Target0; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +float4 f_inner() { + P.a = (P.a + 42u); + return (2.0f).xxxx; +} + +f_outputs f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + P.b = pixel_local_b.Load(v).x; + P.c = pixel_local_c.Load(v).x; + f_outputs v_1 = {f_inner()}; + pixel_local_a[v] = P.a.xxxx; + pixel_local_b[v] = P.b.xxxx; + pixel_local_c[v] = P.c.xxxx; + f_outputs v_2 = v_1; + return v_2; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.dxc.hlsl index 6970257..54aba2e 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,29 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_outputs { + float4 tint_symbol : SV_Target0; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +float4 f_inner() { + P.a = (P.a + 42u); + return (2.0f).xxxx; +} + +f_outputs f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + f_outputs v_1 = {f_inner()}; + pixel_local_a[v] = P.a.xxxx; + f_outputs v_2 = v_1; + return v_2; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.fxc.hlsl index 6970257..54aba2e 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,29 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_outputs { + float4 tint_symbol : SV_Target0; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +float4 f_inner() { + P.a = (P.a + 42u); + return (2.0f).xxxx; +} + +f_outputs f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + f_outputs v_1 = {f_inner()}; + pixel_local_a[v] = P.a.xxxx; + f_outputs v_2 = v_1; + return v_2; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl index 6970257..07451c0 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,30 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +void f_inner() { + P.a = (P.a + 42u); +} + +void f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + P.b = pixel_local_b.Load(v).x; + P.c = pixel_local_c.Load(v).x; + f_inner(); + pixel_local_a[v] = P.a.xxxx; + pixel_local_b[v] = P.b.xxxx; + pixel_local_c[v] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl index 6970257..07451c0 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,30 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +void f_inner() { + P.a = (P.a + 42u); +} + +void f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + P.b = pixel_local_b.Load(v).x; + P.c = pixel_local_c.Load(v).x; + f_inner(); + pixel_local_a[v] = P.a.xxxx; + pixel_local_b[v] = P.b.xxxx; + pixel_local_c[v] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl index 6970257..cc36ed8 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,22 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +void f_inner() { + P.a = (P.a + 42u); +} + +void f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + f_inner(); + pixel_local_a[v] = P.a.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl index 6970257..cc36ed8 100644 --- a/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,22 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +void f_inner() { + P.a = (P.a + 42u); +} + +void f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + f_inner(); + pixel_local_a[v] = P.a.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl index 6970257..cc32902 100644 --- a/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,64 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct Out { + float4 x; + float4 y; + float4 z; +}; -tint executable returned error: exit status 0xc000001d +struct f_outputs { + float4 Out_x : SV_Target0; + float4 Out_y : SV_Target2; + float4 Out_z : SV_Target4; +}; + +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +Out f_inner() { + f2(); + Out v = {(10.0f).xxxx, (20.0f).xxxx, (30.0f).xxxx}; + return v; +} + +f_outputs f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + Out v_2 = f_inner(); + Out v_3 = v_2; + Out v_4 = v_2; + Out v_5 = v_2; + f_outputs v_6 = {v_3.x, v_4.y, v_5.z}; + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; + f_outputs v_7 = v_6; + return v_7; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl index 6970257..cc32902 100644 --- a/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,64 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct Out { + float4 x; + float4 y; + float4 z; +}; -tint executable returned error: exit status 0xc000001d +struct f_outputs { + float4 Out_x : SV_Target0; + float4 Out_y : SV_Target2; + float4 Out_z : SV_Target4; +}; + +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +Out f_inner() { + f2(); + Out v = {(10.0f).xxxx, (20.0f).xxxx, (30.0f).xxxx}; + return v; +} + +f_outputs f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + P.b = pixel_local_b.Load(v_1).x; + P.c = pixel_local_c.Load(v_1).x; + Out v_2 = f_inner(); + Out v_3 = v_2; + Out v_4 = v_2; + Out v_5 = v_2; + f_outputs v_6 = {v_3.x, v_4.y, v_5.z}; + pixel_local_a[v_1] = P.a.xxxx; + pixel_local_b[v_1] = P.b.xxxx; + pixel_local_c[v_1] = P.c.xxxx; + f_outputs v_7 = v_6; + return v_7; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl index 6970257..ab33c0c 100644 --- a/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,56 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct Out { + float4 x; + float4 y; + float4 z; +}; -tint executable returned error: exit status 0xc000001d +struct f_outputs { + float4 Out_x : SV_Target0; + float4 Out_y : SV_Target2; + float4 Out_z : SV_Target3; +}; + +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +Out f_inner() { + f2(); + Out v = {(10.0f).xxxx, (20.0f).xxxx, (30.0f).xxxx}; + return v; +} + +f_outputs f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + Out v_2 = f_inner(); + Out v_3 = v_2; + Out v_4 = v_2; + Out v_5 = v_2; + f_outputs v_6 = {v_3.x, v_4.y, v_5.z}; + pixel_local_a[v_1] = P.a.xxxx; + f_outputs v_7 = v_6; + return v_7; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl index 6970257..ab33c0c 100644 --- a/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,56 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct Out { + float4 x; + float4 y; + float4 z; +}; -tint executable returned error: exit status 0xc000001d +struct f_outputs { + float4 Out_x : SV_Target0; + float4 Out_y : SV_Target2; + float4 Out_z : SV_Target3; +}; + +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +Out f_inner() { + f2(); + Out v = {(10.0f).xxxx, (20.0f).xxxx, (30.0f).xxxx}; + return v; +} + +f_outputs f(f_inputs inputs) { + uint2 v_1 = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v_1).x; + Out v_2 = f_inner(); + Out v_3 = v_2; + Out v_4 = v_2; + Out v_5 = v_2; + f_outputs v_6 = {v_3.x, v_4.y, v_5.z}; + pixel_local_a[v_1] = P.a.xxxx; + f_outputs v_7 = v_6; + return v_7; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.dxc.hlsl index 6970257..f095e38 100644 --- a/test/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,51 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_outputs { + float4 tint_symbol : SV_Target0; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +float4 f_inner() { + f2(); + return (2.0f).xxxx; +} + +f_outputs f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + P.b = pixel_local_b.Load(v).x; + P.c = pixel_local_c.Load(v).x; + f_outputs v_1 = {f_inner()}; + pixel_local_a[v] = P.a.xxxx; + pixel_local_b[v] = P.b.xxxx; + pixel_local_c[v] = P.c.xxxx; + f_outputs v_2 = v_1; + return v_2; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.fxc.hlsl index 6970257..f095e38 100644 --- a/test/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,51 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_outputs { + float4 tint_symbol : SV_Target0; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +float4 f_inner() { + f2(); + return (2.0f).xxxx; +} + +f_outputs f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + P.b = pixel_local_b.Load(v).x; + P.c = pixel_local_c.Load(v).x; + f_outputs v_1 = {f_inner()}; + pixel_local_a[v] = P.a.xxxx; + pixel_local_b[v] = P.b.xxxx; + pixel_local_c[v] = P.c.xxxx; + f_outputs v_2 = v_1; + return v_2; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.dxc.hlsl index 6970257..7c3791c 100644 --- a/test/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,43 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_outputs { + float4 tint_symbol : SV_Target0; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +float4 f_inner() { + f2(); + return (2.0f).xxxx; +} + +f_outputs f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + f_outputs v_1 = {f_inner()}; + pixel_local_a[v] = P.a.xxxx; + f_outputs v_2 = v_1; + return v_2; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.fxc.hlsl index 6970257..7c3791c 100644 --- a/test/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,43 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_outputs { + float4 tint_symbol : SV_Target0; +}; -tint executable returned error: exit status 0xc000001d +struct f_inputs { + float4 pos : SV_Position; +}; + + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +float4 f_inner() { + f2(); + return (2.0f).xxxx; +} + +f_outputs f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + f_outputs v_1 = {f_inner()}; + pixel_local_a[v] = P.a.xxxx; + f_outputs v_2 = v_1; + return v_2; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl index 6970257..603c5e8 100644 --- a/test/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,44 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +void f_inner() { + f2(); +} + +void f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + P.b = pixel_local_b.Load(v).x; + P.c = pixel_local_c.Load(v).x; + f_inner(); + pixel_local_a[v] = P.a.xxxx; + pixel_local_b[v] = P.b.xxxx; + pixel_local_c[v] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl index 6970257..603c5e8 100644 --- a/test/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,44 @@ -SKIP: FAILED +struct PixelLocal { + uint a; + int b; + float c; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +RasterizerOrderedTexture2D<int4> pixel_local_b : register(u6); +RasterizerOrderedTexture2D<float4> pixel_local_c : register(u3); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +void f_inner() { + f2(); +} + +void f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + P.b = pixel_local_b.Load(v).x; + P.c = pixel_local_c.Load(v).x; + f_inner(); + pixel_local_a[v] = P.a.xxxx; + pixel_local_b[v] = P.b.xxxx; + pixel_local_c[v] = P.c.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl index 6970257..526e65f 100644 --- a/test/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,36 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +void f_inner() { + f2(); +} + +void f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + f_inner(); + pixel_local_a[v] = P.a.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl index 6970257..526e65f 100644 --- a/test/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,36 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal P = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +void f0() { + P.a = (P.a + 9u); +} + +void f1() { + f0(); + P.a = (P.a + 8u); +} + +void f2() { + P.a = (P.a + 7u); + f1(); +} + +void f_inner() { + f2(); +} + +void f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + P.a = pixel_local_a.Load(v).x; + f_inner(); + pixel_local_a[v] = P.a.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.dxc.hlsl index 6970257..b5e74b4 100644 --- a/test/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.dxc.hlsl +++ b/test/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.dxc.hlsl
@@ -1,11 +1,22 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal V = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +void f_inner() { + V.a = 42u; +} + +void f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + V.a = pixel_local_a.Load(v).x; + f_inner(); + pixel_local_a[v] = V.a.xxxx; +} +
diff --git a/test/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.fxc.hlsl index 6970257..b5e74b4 100644 --- a/test/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.fxc.hlsl +++ b/test/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.fxc.hlsl
@@ -1,11 +1,22 @@ -SKIP: FAILED +struct PixelLocal { + uint a; +}; -..\..\src\tint\lang\hlsl\writer\printer\printer.cc:522 internal compiler error: unhandled address space pixel_local -******************************************************************** -* The tint shader compiler has encountered an unexpected error. * -* * -* Please help us fix this issue by submitting a bug report at * -* crbug.com/tint with the source program that triggered the bug. * -******************************************************************** +struct f_inputs { + float4 pos : SV_Position; +}; -tint executable returned error: exit status 0xc000001d + +static PixelLocal V = (PixelLocal)0; +RasterizerOrderedTexture2D<uint4> pixel_local_a : register(u1); +void f_inner() { + V.a = 42u; +} + +void f(f_inputs inputs) { + uint2 v = uint2(inputs.pos.xy); + V.a = pixel_local_a.Load(v).x; + f_inner(); + pixel_local_a[v] = V.a.xxxx; +} +