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 228d1e4..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;
+}
+