[tint][wgsl] Add unrestricted_pointer_parameters feature
This WGSL feature is currently exposed as experimental.
The feature replaces the chromium_experimental_full_ptr_parameters extension.
Bug: tint:2053
Change-Id: I84cec96496ae16c6ece82716dcf12b0179bb5b6d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/169264
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/dawn/common/WGSLFeatureMapping.h b/src/dawn/common/WGSLFeatureMapping.h
index 4810cee..3c812dab 100644
--- a/src/dawn/common/WGSLFeatureMapping.h
+++ b/src/dawn/common/WGSLFeatureMapping.h
@@ -30,9 +30,12 @@
#define DAWN_FOREACH_WGSL_FEATURE(X) \
X(kUndefined, Undefined) \
- X(kReadonlyAndReadwriteStorageTextures, ReadonlyAndReadwriteStorageTextures) \
+ /* ------------------------------------------------------------------------ */ \
X(kPacked4X8IntegerDotProduct, Packed4x8IntegerDotProduct) \
X(kPointerCompositeAccess, PointerCompositeAccess) \
+ X(kReadonlyAndReadwriteStorageTextures, ReadonlyAndReadwriteStorageTextures) \
+ X(kUnrestrictedPointerParameters, UnrestrictedPointerParameters) \
+ /* ----------------- entries below are only for testing ------------------ */ \
X(kChromiumTestingUnimplemented, ChromiumTestingUnimplemented) \
X(kChromiumTestingUnsafeExperimental, ChromiumTestingUnsafeExperimental) \
X(kChromiumTestingExperimental, ChromiumTestingExperimental) \
diff --git a/src/dawn/tests/end2end/ShaderTests.cpp b/src/dawn/tests/end2end/ShaderTests.cpp
index e3ba8c0..b2c4762 100644
--- a/src/dawn/tests/end2end/ShaderTests.cpp
+++ b/src/dawn/tests/end2end/ShaderTests.cpp
@@ -38,12 +38,19 @@
class ShaderTests : public DawnTest {
public:
- wgpu::Buffer CreateBuffer(const uint32_t count) {
- std::vector<uint32_t> data(count, 0);
+ wgpu::Buffer CreateBuffer(const std::vector<uint32_t>& data,
+ wgpu::BufferUsage usage = wgpu::BufferUsage::Storage |
+ wgpu::BufferUsage::CopySrc) {
uint64_t bufferSize = static_cast<uint64_t>(data.size() * sizeof(uint32_t));
- return utils::CreateBufferFromData(device, data.data(), bufferSize,
- wgpu::BufferUsage::Storage | wgpu::BufferUsage::CopySrc);
+ return utils::CreateBufferFromData(device, data.data(), bufferSize, usage);
}
+
+ wgpu::Buffer CreateBuffer(const uint32_t count,
+ wgpu::BufferUsage usage = wgpu::BufferUsage::Storage |
+ wgpu::BufferUsage::CopySrc) {
+ return CreateBuffer(std::vector<uint32_t>(count, 0), usage);
+ }
+
wgpu::ComputePipeline CreateComputePipeline(
const std::string& shader,
const char* entryPoint = nullptr,
@@ -2265,6 +2272,94 @@
EXPECT_BUFFER_U32_EQ(42, output, 0);
}
+TEST_P(ShaderTests, UnrestrictedPointerParameters) {
+ // TODO(crbug.com/dawn/2350): Investigate, fix.
+ DAWN_TEST_UNSUPPORTED_IF(IsD3D11());
+
+ wgpu::ComputePipeline pipeline = CreateComputePipeline(R"(
+@binding(0) @group(0) var<uniform> input : array<vec4i, 4>;
+@binding(1) @group(0) var<storage, read_write> output : array<vec4i, 4>;
+
+fn sum(f : ptr<function, i32>,
+ w : ptr<workgroup, atomic<i32>>,
+ p : ptr<private, i32>,
+ u : ptr<uniform, vec4i>) -> vec4i {
+
+ return vec4(*f + atomicLoad(w) + *p) + *u;
+}
+
+struct S {
+ i : i32,
+}
+
+var<private> P0 = S(0);
+var<private> P1 = S(10);
+var<private> P2 = 20;
+var<private> P3 = 30;
+
+struct T {
+ i : atomic<i32>,
+}
+
+var<workgroup> W0 : T;
+var<workgroup> W1 : atomic<i32>;
+var<workgroup> W2 : T;
+var<workgroup> W3 : atomic<i32>;
+
+@compute @workgroup_size(1)
+fn main() {
+ atomicStore(&W0.i, 0);
+ atomicStore(&W1, 100);
+ atomicStore(&W2.i, 200);
+ atomicStore(&W3, 300);
+
+ var F = array(0, 1000, 2000, 3000);
+
+ output[0] = sum(&F[2], &W3, &P1.i, &input[0]); // vec4(2310) + vec4(1, 2, 3, 4)
+ output[1] = sum(&F[1], &W2.i, &P0.i, &input[1]); // vec4(1200) + vec4(4, 3, 2, 1)
+ output[2] = sum(&F[3], &W0.i, &P3, &input[2]); // vec4(3030) + vec4(2, 4, 1, 3)
+ output[3] = sum(&F[2], &W1, &P2, &input[3]); // vec4(2120) + vec4(4, 1, 2, 3)
+}
+)");
+
+ wgpu::Buffer input = CreateBuffer(
+ std::vector<uint32_t>{
+ 1, 2, 3, 4, // [0]
+ 4, 3, 2, 1, // [1]
+ 2, 4, 1, 3, // [2]
+ 4, 1, 2, 3, // [3]
+ },
+ wgpu::BufferUsage::Uniform);
+
+ std::vector<uint32_t> expected{
+ 2311, 2312, 2313, 2314, // [0]
+ 1204, 1203, 1202, 1201, // [1]
+ 3032, 3034, 3031, 3033, // [2]
+ 2124, 2121, 2122, 2123, // [3]
+ };
+
+ wgpu::Buffer output = CreateBuffer(expected.size());
+
+ wgpu::BindGroup bindGroup =
+ utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0), {{0, input}, {1, output}});
+
+ wgpu::CommandBuffer commands;
+ {
+ wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+ wgpu::ComputePassEncoder pass = encoder.BeginComputePass();
+ pass.SetPipeline(pipeline);
+ pass.SetBindGroup(0, bindGroup);
+ pass.DispatchWorkgroups(1);
+ pass.End();
+
+ commands = encoder.Finish();
+ }
+
+ queue.Submit(1, &commands);
+
+ EXPECT_BUFFER_U32_RANGE_EQ(expected.data(), output, 0, expected.size());
+}
+
DAWN_INSTANTIATE_TEST(ShaderTests,
D3D11Backend(),
D3D12Backend(),
diff --git a/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp b/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
index bf07372..1e6c588 100644
--- a/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
@@ -802,7 +802,6 @@
// Currently the following WGSL extensions are not enabled under any situation.
/*
- {"chromium_experimental_full_ptr_parameters", true, nullptr},
{"chromium_experimental_push_constant", true, nullptr},
{"chromium_internal_relaxed_uniform_layout", true, nullptr},
*/
diff --git a/src/tint/cmd/fuzz/ir/fuzz.cc b/src/tint/cmd/fuzz/ir/fuzz.cc
index 5fa170f..8fbf4cb 100644
--- a/src/tint/cmd/fuzz/ir/fuzz.cc
+++ b/src/tint/cmd/fuzz/ir/fuzz.cc
@@ -46,7 +46,6 @@
bool IsUnsupported(const ast::Enable* enable) {
for (auto ext : enable->extensions) {
switch (ext->name) {
- case tint::wgsl::Extension::kChromiumExperimentalFullPtrParameters:
case tint::wgsl::Extension::kChromiumExperimentalPixelLocal:
case tint::wgsl::Extension::kChromiumExperimentalPushConstant:
case tint::wgsl::Extension::kChromiumInternalDualSourceBlending:
diff --git a/src/tint/lang/core/ir/transform/direct_variable_access_wgsl_test.cc b/src/tint/lang/core/ir/transform/direct_variable_access_wgsl_test.cc
index 49780b7..f0f2e00 100644
--- a/src/tint/lang/core/ir/transform/direct_variable_access_wgsl_test.cc
+++ b/src/tint/lang/core/ir/transform/direct_variable_access_wgsl_test.cc
@@ -59,7 +59,9 @@
class DirectVariableAccessTest : public TransformTestBase<testing::Test> {
public:
- std::string Run(std::string in, const DirectVariableAccessOptions& options = {}) {
+ std::string Run(std::string in,
+ const DirectVariableAccessOptions& transform_options = {},
+ const wgsl::writer::ProgramOptions program_options = {}) {
wgsl::reader::Options parser_options;
parser_options.allowed_features = wgsl::AllowedFeatures::Everything();
Source::File file{"test", in};
@@ -73,7 +75,7 @@
return "ProgramToIR() failed:\n" + module.Failure().reason.str();
}
- auto res = DirectVariableAccess(module.Get(), options);
+ auto res = DirectVariableAccess(module.Get(), transform_options);
if (res != Success) {
return "DirectVariableAccess failed:\n" + res.Failure().reason.str();
}
@@ -84,9 +86,6 @@
return "wgsl::writer::Raise failed:\n" + res.Failure().reason.str();
}
- wgsl::writer::ProgramOptions program_options;
- program_options.allowed_features.extensions.insert(
- wgsl::Extension::kChromiumExperimentalFullPtrParameters);
auto program_out = wgsl::writer::IRToProgram(module.Get(), program_options);
if (!program_out.IsValid()) {
return "wgsl::writer::IRToProgram() failed: \n" + program_out.Diagnostics().str() +
@@ -116,8 +115,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_RemoveUncalled, PtrUniform) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me : i32 = 42i;
fn u(pre : i32, p : ptr<uniform, i32>, post : i32) -> i32 {
@@ -137,8 +134,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_RemoveUncalled, PtrStorage) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me : i32 = 42i;
fn s(pre : i32, p : ptr<storage, i32>, post : i32) -> i32 {
@@ -157,8 +152,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_RemoveUncalled, PtrWorkgroup) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me : i32 = 42i;
fn w(pre : i32, p : ptr<workgroup, i32>, post : i32) -> i32 {
@@ -255,8 +248,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PtrChains, ConstantIndices) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 8>, 8>, 8>;
fn a(pre : i32, p : ptr<uniform, vec4<i32>>, post : i32) -> vec4<i32> {
@@ -312,8 +303,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PtrChains, DynamicIndices) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 8>, 8>, 8>;
var<private> i : i32;
@@ -401,8 +390,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PtrChains, DynamicIndicesForLoopInit) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -479,8 +466,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PtrChains, DynamicIndicesForLoopCond) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -563,8 +548,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PtrChains, DynamicIndicesForLoopCont) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -647,8 +630,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PtrChains, DynamicIndicesWhileCond) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -739,8 +720,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_UniformAS, Param_ptr_i32_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : i32;
fn a(pre : i32, p : ptr<uniform, i32>, post : i32) -> i32 {
@@ -771,8 +750,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_UniformAS, Param_ptr_vec4i32_Via_array_DynamicRead) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<vec4<i32>, 8>;
fn a(pre : i32, p : ptr<uniform, vec4<i32>>, post : i32) -> vec4<i32> {
@@ -805,8 +782,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_UniformAS, CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -946,8 +921,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_StorageAS, Param_ptr_i32_Via_struct_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
@@ -986,8 +959,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_StorageAS, Param_ptr_arr_i32_Via_struct_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
@@ -1026,8 +997,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_StorageAS, Param_ptr_vec4i32_Via_array_DynamicWrite) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : array<vec4<i32>, 8>;
fn a(pre : i32, p : ptr<storage, vec4<i32>, read_write>, post : i32) {
@@ -1060,8 +1029,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_StorageAS, CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -1201,8 +1168,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_WorkgroupAS, Param_ptr_vec4i32_Via_array_StaticRead) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> W : array<vec4<i32>, 8>;
fn a(pre : i32, p : ptr<workgroup, vec4<i32>>, post : i32) -> vec4<i32> {
@@ -1233,8 +1198,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_WorkgroupAS, Param_ptr_vec4i32_Via_array_StaticWrite) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> W : array<vec4<i32>, 8>;
fn a(pre : i32, p : ptr<workgroup, vec4<i32>>, post : i32) {
@@ -1265,8 +1228,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_WorkgroupAS, CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -1406,8 +1367,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PrivateAS, Enabled_Param_ptr_i32_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a(pre : i32, p : ptr<private, i32>, post : i32) -> i32 {
return *(p);
}
@@ -1438,8 +1397,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PrivateAS, Enabled_Param_ptr_i32_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a(pre : i32, p : ptr<private, i32>, post : i32) {
*(p) = 42;
}
@@ -1470,8 +1427,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PrivateAS, Enabled_Param_ptr_i32_Via_struct_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
@@ -1510,8 +1465,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PrivateAS, Disabled_Param_ptr_i32_Via_struct_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
@@ -1529,15 +1482,16 @@
auto* expect = src;
- auto got = Run(src);
+ wgsl::writer::ProgramOptions program_options;
+ program_options.allowed_features.features.emplace(
+ wgsl::LanguageFeature::kUnrestrictedPointerParameters);
+ auto got = Run(src, /* transform_options */ {}, program_options);
EXPECT_EQ(expect, got);
}
TEST_F(IR_DirectVariableAccessWgslTest_PrivateAS, Enabled_Param_ptr_arr_i32_Via_struct_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
@@ -1576,8 +1530,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PrivateAS, Disabled_Param_ptr_arr_i32_Via_struct_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4u>,
}
@@ -1595,15 +1547,16 @@
auto* expect = src;
- auto got = Run(src);
+ wgsl::writer::ProgramOptions program_options;
+ program_options.allowed_features.features.emplace(
+ wgsl::LanguageFeature::kUnrestrictedPointerParameters);
+ auto got = Run(src, /* transform_options */ {}, program_options);
EXPECT_EQ(expect, got);
}
TEST_F(IR_DirectVariableAccessWgslTest_PrivateAS, Enabled_Param_ptr_i32_mixed) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
@@ -1660,8 +1613,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PrivateAS, Disabled_Param_ptr_i32_mixed) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> Pi : i32;
struct str {
@@ -1685,15 +1636,16 @@
auto* expect = src;
- auto got = Run(src);
+ wgsl::writer::ProgramOptions program_options;
+ program_options.allowed_features.features.emplace(
+ wgsl::LanguageFeature::kUnrestrictedPointerParameters);
+ auto got = Run(src, /* transform_options */ {}, program_options);
EXPECT_EQ(expect, got);
}
TEST_F(IR_DirectVariableAccessWgslTest_PrivateAS, Enabled_CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -1824,8 +1776,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_PrivateAS, Disabled_CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
}
@@ -1877,7 +1827,10 @@
auto* expect = src;
- auto got = Run(src);
+ wgsl::writer::ProgramOptions program_options;
+ program_options.allowed_features.features.emplace(
+ wgsl::LanguageFeature::kUnrestrictedPointerParameters);
+ auto got = Run(src, /* transform_options */ {}, program_options);
EXPECT_EQ(expect, got);
}
@@ -1909,8 +1862,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_FunctionAS, Enabled_Param_ptr_i32_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a(pre : i32, p : ptr<function, i32>, post : i32) -> i32 {
return *(p);
}
@@ -1939,8 +1890,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_FunctionAS, Enabled_Param_ptr_i32_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a(pre : i32, p : ptr<function, i32>, post : i32) {
*(p) = 42;
}
@@ -1969,8 +1918,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_FunctionAS, Enabled_Param_ptr_i32_Via_struct_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
@@ -2007,8 +1954,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_FunctionAS, Enabled_Param_ptr_arr_i32_Via_struct_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
@@ -2045,8 +1990,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_FunctionAS, Enabled_Param_ptr_i32_mixed) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
@@ -2100,8 +2043,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_FunctionAS, Disabled_Param_ptr_i32_Via_struct_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a(pre : i32, p : ptr<function, i32>, post : i32) -> i32 {
return *(p);
}
@@ -2118,15 +2059,16 @@
auto* expect = src;
- auto got = Run(src);
+ wgsl::writer::ProgramOptions program_options;
+ program_options.allowed_features.features.emplace(
+ wgsl::LanguageFeature::kUnrestrictedPointerParameters);
+ auto got = Run(src, /* transform_options */ {}, program_options);
EXPECT_EQ(expect, got);
}
TEST_F(IR_DirectVariableAccessWgslTest_FunctionAS, Disabled_Param_ptr_arr_i32_Via_struct_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a(pre : i32, p : ptr<function, array<i32, 4u>>, post : i32) {
*(p) = array<i32, 4u>();
}
@@ -2143,7 +2085,10 @@
auto* expect = src;
- auto got = Run(src);
+ wgsl::writer::ProgramOptions program_options;
+ program_options.allowed_features.features.emplace(
+ wgsl::LanguageFeature::kUnrestrictedPointerParameters);
+ auto got = Run(src, /* transform_options */ {}, program_options);
EXPECT_EQ(expect, got);
}
@@ -2159,8 +2104,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_BuiltinFn, ArrayLength) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : array<f32>;
fn len(p : ptr<storage, array<f32>>) -> u32 {
@@ -2191,8 +2134,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_BuiltinFn, WorkgroupUniformLoad) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> W : f32;
fn load(p : ptr<workgroup, f32>) -> f32 {
@@ -2232,8 +2173,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_Complex, Param_ptr_mixed_vec4i32_ViaMultiple) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<i32>,
};
@@ -2418,8 +2357,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_Complex, Indexing) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : array<array<array<array<i32, 9>, 9>, 9>, 50>;
fn a(i : i32) -> i32 { return i; }
@@ -2459,8 +2396,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_Complex, IndexingInPtrCall) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : array<array<array<array<i32, 9>, 9>, 9>, 50>;
fn a(pre : i32, i : ptr<storage, i32>, post : i32) -> i32 {
@@ -2504,8 +2439,6 @@
TEST_F(IR_DirectVariableAccessWgslTest_Complex, IndexingDualPointers) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : array<array<array<i32, 9>, 9>, 50>;
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 9>, 9>, 50>;
diff --git a/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc b/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
index 9a7c6ea..2026bd2 100644
--- a/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
@@ -266,7 +266,6 @@
"GLSL", builder_.AST(), diagnostics_,
Vector{
wgsl::Extension::kChromiumDisableUniformityAnalysis,
- wgsl::Extension::kChromiumExperimentalFullPtrParameters,
wgsl::Extension::kChromiumInternalDualSourceBlending,
wgsl::Extension::kChromiumExperimentalPushConstant,
wgsl::Extension::kF16,
diff --git a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
index 3415d05..d6eec1a 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
@@ -385,7 +385,6 @@
"HLSL", builder_.AST(), diagnostics_,
Vector{
wgsl::Extension::kChromiumDisableUniformityAnalysis,
- wgsl::Extension::kChromiumExperimentalFullPtrParameters,
wgsl::Extension::kChromiumExperimentalPushConstant,
wgsl::Extension::kChromiumExperimentalSubgroups,
wgsl::Extension::kF16,
diff --git a/src/tint/lang/msl/writer/ast_printer/ast_printer.cc b/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
index 3fb75a8..63dcf81 100644
--- a/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
@@ -277,7 +277,6 @@
"MSL", builder_.AST(), diagnostics_,
Vector{
wgsl::Extension::kChromiumDisableUniformityAnalysis,
- wgsl::Extension::kChromiumExperimentalFullPtrParameters,
wgsl::Extension::kChromiumExperimentalPixelLocal,
wgsl::Extension::kChromiumExperimentalSubgroups,
wgsl::Extension::kChromiumExperimentalFramebufferFetch,
diff --git a/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param.cc b/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param.cc
index 38cad89..8335eac 100644
--- a/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param.cc
+++ b/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param.cc
@@ -375,9 +375,6 @@
if (!private_struct_members.IsEmpty()) {
// Create the private variable struct.
ctx.dst->Structure(PrivateStructName(), std::move(private_struct_members));
- // Passing a pointer to a private variable will now involve passing a pointer to the
- // member of a structure, so enable the extension that allows this.
- ctx.dst->Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
}
// Build a list of `&ident` expressions. We'll use this later to avoid generating
diff --git a/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param_test.cc b/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param_test.cc
index f7630f5..3bbb4fe 100644
--- a/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param_test.cc
+++ b/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param_test.cc
@@ -62,8 +62,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct tint_private_vars_struct {
p : f32,
}
@@ -93,8 +91,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct tint_private_vars_struct {
p : f32,
}
@@ -143,8 +139,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct tint_private_vars_struct {
p : f32,
}
@@ -214,8 +208,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct tint_private_vars_struct {
p : f32,
}
@@ -266,8 +258,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct tint_private_vars_struct {
a : f32,
b : f32,
@@ -299,8 +289,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct tint_private_vars_struct {
a : f32,
b : f32,
@@ -335,8 +323,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct tint_private_vars_struct {
p : f32,
}
@@ -372,8 +358,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct tint_private_vars_struct {
p : f32,
}
@@ -1232,8 +1216,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct tint_private_vars_struct {
p : f32,
p_with_init : f32,
@@ -1278,8 +1260,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
a : f32,
b : f32,
@@ -1339,8 +1319,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
a : f32,
b : f32,
diff --git a/src/tint/lang/msl/writer/ast_raise/packed_vec3_test.cc b/src/tint/lang/msl/writer/ast_raise/packed_vec3_test.cc
index 325f528..220dabb 100644
--- a/src/tint/lang/msl/writer/ast_raise/packed_vec3_test.cc
+++ b/src/tint/lang/msl/writer/ast_raise/packed_vec3_test.cc
@@ -4652,8 +4652,6 @@
// Test that we can pass a pointer to the vec3 member of the modf return struct to a function
// parameter to which we also pass a pointer to a vec3 member on a host-shareable struct.
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
v : vec3<f32>
}
@@ -4676,7 +4674,6 @@
auto* expect = R"(
enable chromium_internal_relaxed_uniform_layout;
-enable chromium_experimental_full_ptr_parameters;
struct S_tint_packed_vec3 {
@align(16)
@@ -5305,8 +5302,6 @@
TEST_F(PackedVec3Test, VectorPointerParameters) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
v : vec3<f32>,
m : mat3x3<f32>,
@@ -5350,7 +5345,6 @@
auto* expect = R"(
enable chromium_internal_relaxed_uniform_layout;
-enable chromium_experimental_full_ptr_parameters;
struct tint_packed_vec3_f32_array_element {
@align(16)
@@ -5421,8 +5415,6 @@
TEST_F(PackedVec3Test, MatrixPointerParameters) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
m : mat3x3<f32>,
arr_m : array<mat3x3<f32>, 4>,
@@ -5454,7 +5446,6 @@
auto* expect = R"(
enable chromium_internal_relaxed_uniform_layout;
-enable chromium_experimental_full_ptr_parameters;
struct tint_packed_vec3_f32_array_element {
@align(16)
@@ -5523,8 +5514,6 @@
TEST_F(PackedVec3Test, ArrayOfVectorPointerParameters) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
arr_v : array<vec3<f32>, 4>,
}
@@ -5550,7 +5539,6 @@
auto* expect = R"(
enable chromium_internal_relaxed_uniform_layout;
-enable chromium_experimental_full_ptr_parameters;
struct tint_packed_vec3_f32_array_element {
@align(16)
@@ -5610,8 +5598,6 @@
TEST_F(PackedVec3Test, ArrayOfMatrixPointerParameters) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
arr_m : array<mat3x3<f32>, 4>,
}
@@ -5637,7 +5623,6 @@
auto* expect = R"(
enable chromium_internal_relaxed_uniform_layout;
-enable chromium_experimental_full_ptr_parameters;
struct tint_packed_vec3_f32_array_element {
@align(16)
@@ -5713,8 +5698,6 @@
TEST_F(PackedVec3Test, StructPointerParameters) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
v : vec3<f32>,
m : mat3x3<f32>,
@@ -5740,7 +5723,6 @@
auto* expect = R"(
enable chromium_internal_relaxed_uniform_layout;
-enable chromium_experimental_full_ptr_parameters;
struct tint_packed_vec3_f32_array_element {
@align(16)
@@ -6016,8 +5998,6 @@
// Test that we can pass a pointers to a members of both shared and non-shared structs to the
// same function.
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
v : vec3<f32>,
arr : array<vec3<f32>, 4>,
@@ -6047,7 +6027,6 @@
auto* expect = R"(
enable chromium_internal_relaxed_uniform_layout;
-enable chromium_experimental_full_ptr_parameters;
struct tint_packed_vec3_f32_array_element {
@align(16)
@@ -6683,8 +6662,6 @@
TEST_F(PackedVec3Test, MixedAddressSpace_PointerParameters) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
v : vec3<f32>,
m : mat3x3<f32>,
@@ -6715,7 +6692,6 @@
auto* expect = R"(
enable chromium_internal_relaxed_uniform_layout;
-enable chromium_experimental_full_ptr_parameters;
struct tint_packed_vec3_f32_array_element {
@align(16)
@@ -7649,8 +7625,6 @@
// matrix into an array of vec3s in uniform storage.
auto* src = R"(
enable f16;
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> m : mat3x3<f16>;
fn g(p : ptr<uniform, mat3x3<f16>>) -> vec3<f16> {
@@ -7666,7 +7640,6 @@
R"(
enable chromium_internal_relaxed_uniform_layout;
enable f16;
-enable chromium_experimental_full_ptr_parameters;
struct tint_packed_vec3_f16_array_element {
@align(8)
diff --git a/src/tint/lang/spirv/writer/ast_printer/builder.cc b/src/tint/lang/spirv/writer/ast_printer/builder.cc
index b736b28..1895d11 100644
--- a/src/tint/lang/spirv/writer/ast_printer/builder.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/builder.cc
@@ -277,7 +277,6 @@
"SPIR-V", builder_.AST(), builder_.Diagnostics(),
Vector{
wgsl::Extension::kChromiumDisableUniformityAnalysis,
- wgsl::Extension::kChromiumExperimentalFullPtrParameters,
wgsl::Extension::kChromiumExperimentalPushConstant,
wgsl::Extension::kChromiumExperimentalSubgroups,
wgsl::Extension::kF16,
diff --git a/src/tint/lang/wgsl/ast/module_test.cc b/src/tint/lang/wgsl/ast/module_test.cc
index 842a357..8e5f629 100644
--- a/src/tint/lang/wgsl/ast/module_test.cc
+++ b/src/tint/lang/wgsl/ast/module_test.cc
@@ -147,7 +147,7 @@
TEST_F(ModuleTest, Directives) {
auto* enable_1 = Enable(wgsl::Extension::kF16);
auto* diagnostic_1 = DiagnosticDirective(wgsl::DiagnosticSeverity::kWarning, "foo");
- auto* enable_2 = Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
+ auto* enable_2 = Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
auto* diagnostic_2 = DiagnosticDirective(wgsl::DiagnosticSeverity::kOff, "bar");
Program program(std::move(*this));
diff --git a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
index adc8df2..b3a8ece 100644
--- a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
+++ b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
@@ -61,15 +61,7 @@
/// Constructor
/// @param program the source program
/// @param config the transform config
- State(const Program& program, const Config& config) : src(program), cfg(config) {
- has_full_ptr_params = false;
- for (auto* enable : src.AST().Enables()) {
- if (enable->HasExtension(wgsl::Extension::kChromiumExperimentalFullPtrParameters)) {
- has_full_ptr_params = true;
- break;
- }
- }
- }
+ State(const Program& program, const Config& config) : src(program), cfg(config) {}
/// Runs the transform
/// @returns the new program or SkipTransform if the transform is not required
@@ -171,8 +163,6 @@
Hashmap<const sem::BuiltinFn*, Symbol, 8> builtin_polyfills;
/// Polyfill f32 conversion to i32 or u32 (or vectors of)
Hashmap<const core::type::Type*, Symbol, 2> f32_conv_polyfills;
- // Tracks whether the chromium_experimental_full_ptr_parameters extension has been enabled.
- bool has_full_ptr_params = false;
/// True if the transform has made changes (i.e. the program needs cloning)
bool made_changes = false;
@@ -823,10 +813,6 @@
/// @param type the type being loaded
/// @return the polyfill function name
Symbol workgroupUniformLoad(const core::type::Type* type) {
- if (!has_full_ptr_params) {
- b.Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
- has_full_ptr_params = true;
- }
auto name = b.Symbols().New("tint_workgroupUniformLoad");
b.Func(name,
tint::Vector{
diff --git a/src/tint/lang/wgsl/ast/transform/builtin_polyfill_test.cc b/src/tint/lang/wgsl/ast/transform/builtin_polyfill_test.cc
index 4366226..0c64163 100644
--- a/src/tint/lang/wgsl/ast/transform/builtin_polyfill_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/builtin_polyfill_test.cc
@@ -3774,8 +3774,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn tint_workgroupUniformLoad(p : ptr<workgroup, i32>) -> i32 {
workgroupBarrier();
let result = *(p);
@@ -3815,8 +3813,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn tint_workgroupUniformLoad(p : ptr<workgroup, Outer>) -> Outer {
workgroupBarrier();
let result = *(p);
@@ -3848,8 +3844,6 @@
TEST_F(BuiltinPolyfillTest, WorkgroupUniformLoad_AvoidDuplicateEnables) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : i32;
var<workgroup> b : u32;
var<workgroup> c : f32;
@@ -3862,8 +3856,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn tint_workgroupUniformLoad(p : ptr<workgroup, i32>) -> i32 {
workgroupBarrier();
let result = *(p);
@@ -3915,8 +3907,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn tint_workgroupUniformLoad_v() -> i32 {
workgroupBarrier();
let result = v;
diff --git a/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc b/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
index c73dead..4ecea23 100644
--- a/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
+++ b/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
@@ -195,10 +195,8 @@
/// The main function for the transform.
/// @returns the ApplyResult
ApplyResult Run() {
- if (!ctx.src->Sem().Module()->Extensions().Contains(
- wgsl::Extension::kChromiumExperimentalFullPtrParameters)) {
- // If the 'chromium_experimental_full_ptr_parameters' extension is not enabled, then
- // there's nothing for this transform to do.
+ // If there are no functions with pointer parameters, then this transform can be skipped.
+ if (!AnyPointerParameters()) {
return SkipTransform;
}
@@ -409,6 +407,18 @@
/// Only valid during the lifetime of the program::CloneContext::Clone().
CloneState* clone_state = nullptr;
+ /// @returns true if any user functions have parameters of a pointer type.
+ bool AnyPointerParameters() const {
+ for (auto* fn : ctx.src->AST().Functions()) {
+ for (auto* param : fn->params) {
+ if (sem.Get(param)->Type()->Is<core::type::Pointer>()) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
/// AppendAccessChain creates or extends an existing AccessChain for the given expression,
/// modifying the #access_chains map.
void AppendAccessChain(const sem::ValueExpression* expr) {
diff --git a/src/tint/lang/wgsl/ast/transform/direct_variable_access.h b/src/tint/lang/wgsl/ast/transform/direct_variable_access.h
index b47f7e3..d1bb9fe 100644
--- a/src/tint/lang/wgsl/ast/transform/direct_variable_access.h
+++ b/src/tint/lang/wgsl/ast/transform/direct_variable_access.h
@@ -34,8 +34,7 @@
/// DirectVariableAccess is a transform that allows usage of pointer parameters in the 'storage',
/// 'uniform' and 'workgroup' address space, and passing of pointers to sub-objects. These pointers
-/// are only allowed by the resolver when the `chromium_experimental_full_ptr_parameters` extension
-/// is enabled.
+/// are allowed with the `unrestricted_pointer_parameters` WGSL feature.
///
/// DirectVariableAccess works by creating specializations of functions that have pointer
/// parameters, one specialization for each pointer argument's unique access chain 'shape' from a
diff --git a/src/tint/lang/wgsl/ast/transform/direct_variable_access_test.cc b/src/tint/lang/wgsl/ast/transform/direct_variable_access_test.cc
index 10f6421..04666b2 100644
--- a/src/tint/lang/wgsl/ast/transform/direct_variable_access_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/direct_variable_access_test.cc
@@ -80,8 +80,6 @@
TEST_F(DirectVariableAccessRemoveUncalledTest, PtrUniform) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me = 42;
fn u(pre : i32, p : ptr<uniform, i32>, post : i32) -> i32 {
@@ -91,8 +89,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me = 42;
)";
@@ -103,8 +99,6 @@
TEST_F(DirectVariableAccessRemoveUncalledTest, PtrStorage) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me = 42;
fn s(pre : i32, p : ptr<storage, i32>, post : i32) -> i32 {
@@ -113,8 +107,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me = 42;
)";
@@ -125,8 +117,6 @@
TEST_F(DirectVariableAccessRemoveUncalledTest, PtrWorkgroup) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me = 42;
fn w(pre : i32, p : ptr<workgroup, i32>, post : i32) -> i32 {
@@ -136,8 +126,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me = 42;
)";
@@ -148,8 +136,6 @@
TEST_F(DirectVariableAccessRemoveUncalledTest, PtrPrivate_Disabled) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me = 42;
fn f(pre : i32, p : ptr<private, i32>, post : i32) -> i32 {
@@ -166,8 +152,6 @@
TEST_F(DirectVariableAccessRemoveUncalledTest, PtrPrivate_Enabled) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me = 42;
)";
@@ -180,8 +164,6 @@
TEST_F(DirectVariableAccessRemoveUncalledTest, PtrFunction_Disabled) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me = 42;
fn f(pre : i32, p : ptr<function, i32>, post : i32) -> i32 {
@@ -198,8 +180,6 @@
TEST_F(DirectVariableAccessRemoveUncalledTest, PtrFunction_Enabled) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> keep_me = 42;
)";
@@ -221,8 +201,6 @@
TEST_F(DirectVariableAccessPtrChainsTest, ConstantIndices) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 8>, 8>, 8>;
fn a(pre : i32, p : ptr<uniform, vec4<i32>>, post : i32) -> vec4<i32> {
@@ -251,8 +229,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 8>, 8>, 8>;
alias U_X_X_X = array<u32, 3u>;
@@ -289,8 +265,6 @@
TEST_F(DirectVariableAccessPtrChainsTest, ConstantIndices_ViaPointerIndex) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 8>, 8>, 8>;
fn a(pre : i32, p : ptr<uniform, vec4<i32>>, post : i32) -> vec4<i32> {
@@ -319,8 +293,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 8>, 8>, 8>;
alias U_X_X_X = array<u32, 3u>;
@@ -357,8 +329,6 @@
TEST_F(DirectVariableAccessPtrChainsTest, HoistIndices) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 8>, 8>, 8>;
var<private> i : i32;
@@ -399,8 +369,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 8>, 8>, 8>;
var<private> i : i32;
@@ -458,8 +426,6 @@
TEST_F(DirectVariableAccessPtrChainsTest, HoistInForLoopInit) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -494,8 +460,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -558,8 +522,6 @@
TEST_F(DirectVariableAccessPtrChainsTest, HoistInForLoopCond) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -596,8 +558,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -648,8 +608,6 @@
TEST_F(DirectVariableAccessPtrChainsTest, HoistInForLoopCont) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -686,8 +644,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -738,8 +694,6 @@
TEST_F(DirectVariableAccessPtrChainsTest, HoistInWhileCond) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -776,8 +730,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<array<vec4<i32>, 8>, 8>;
var<private> i : i32;
@@ -837,8 +789,6 @@
TEST_F(DirectVariableAccessUniformASTest, Param_ptr_i32_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : i32;
fn a(pre : i32, p : ptr<uniform, i32>, post : i32) -> i32 {
@@ -851,8 +801,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : i32;
fn a_U(pre : i32, post : i32) -> i32 {
@@ -871,8 +819,6 @@
TEST_F(DirectVariableAccessUniformASTest, Param_ptr_vec4i32_Via_array_DynamicRead) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<vec4<i32>, 8>;
fn a(pre : i32, p : ptr<uniform, vec4<i32>>, post : i32) -> vec4<i32> {
@@ -886,8 +832,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<vec4<i32>, 8>;
alias U_X = array<u32, 1u>;
@@ -909,8 +853,6 @@
TEST_F(DirectVariableAccessUniformASTest, Param_ptr_vec4i32_Via_array_DynamicRead_ViaPointerDot) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<vec4<i32>, 8>;
fn a(pre : i32, p : ptr<uniform, vec4<i32>>, post : i32) -> vec4<i32> {
@@ -925,8 +867,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> U : array<vec4<i32>, 8>;
alias U_X = array<u32, 1u>;
@@ -949,8 +889,6 @@
TEST_F(DirectVariableAccessUniformASTest, CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -1011,8 +949,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
}
@@ -1106,8 +1042,6 @@
TEST_F(DirectVariableAccessUniformASTest, CallChaining_ViaPointerDotOrIndex) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -1168,8 +1102,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
}
@@ -1263,8 +1195,6 @@
TEST_F(DirectVariableAccessUniformASTest, CallChaining2) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias T3 = vec4i;
alias T2 = array<T3, 5>;
alias T1 = array<T2, 5>;
@@ -1292,8 +1222,6 @@
auto* expect =
R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias T3 = vec4i;
alias T2 = array<T3, 5>;
@@ -1342,8 +1270,6 @@
TEST_F(DirectVariableAccessStorageASTest, Param_ptr_i32_Via_struct_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
@@ -1360,8 +1286,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
@@ -1384,8 +1308,6 @@
TEST_F(DirectVariableAccessStorageASTest, Param_ptr_arr_i32_Via_struct_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
@@ -1402,8 +1324,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
@@ -1426,8 +1346,6 @@
TEST_F(DirectVariableAccessStorageASTest, Param_ptr_vec4i32_Via_array_DynamicWrite) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : array<vec4<i32>, 8>;
fn a(pre : i32, p : ptr<storage, vec4<i32>, read_write>, post : i32) {
@@ -1441,8 +1359,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : array<vec4<i32>, 8>;
alias S_X = array<u32, 1u>;
@@ -1464,8 +1380,6 @@
TEST_F(DirectVariableAccessStorageASTest, CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -1526,8 +1440,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
}
@@ -1621,8 +1533,6 @@
TEST_F(DirectVariableAccessStorageASTest, CallChaining_ViaPointerDotOrIndex) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -1683,8 +1593,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
}
@@ -1778,8 +1686,6 @@
TEST_F(DirectVariableAccessStorageASTest, CallChaining2) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias T3 = vec4i;
alias T2 = array<T3, 5>;
alias T1 = array<T2, 5>;
@@ -1807,8 +1713,6 @@
auto* expect =
R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias T3 = vec4i;
alias T2 = array<T3, 5>;
@@ -1857,8 +1761,6 @@
TEST_F(DirectVariableAccessWorkgroupASTest, Param_ptr_vec4i32_Via_array_StaticRead) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> W : array<vec4<i32>, 8>;
fn a(pre : i32, p : ptr<workgroup, vec4<i32>>, post : i32) -> vec4<i32> {
@@ -1871,8 +1773,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> W : array<vec4<i32>, 8>;
alias W_X = array<u32, 1u>;
@@ -1893,8 +1793,6 @@
TEST_F(DirectVariableAccessWorkgroupASTest, Param_ptr_vec4i32_Via_array_StaticWrite) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> W : array<vec4<i32>, 8>;
fn a(pre : i32, p : ptr<workgroup, vec4<i32>>, post : i32) {
@@ -1907,8 +1805,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> W : array<vec4<i32>, 8>;
alias W_X = array<u32, 1u>;
@@ -1929,8 +1825,6 @@
TEST_F(DirectVariableAccessWorkgroupASTest, CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -1991,8 +1885,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
}
@@ -2086,8 +1978,6 @@
TEST_F(DirectVariableAccessWorkgroupASTest, CallChaining_ViaPointerDotOrIndex) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -2148,8 +2038,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
}
@@ -2243,8 +2131,6 @@
TEST_F(DirectVariableAccessWorkgroupASTest, CallChaining2) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias T3 = vec4i;
alias T2 = array<T3, 5>;
alias T1 = array<T2, 5>;
@@ -2274,8 +2160,6 @@
auto* expect =
R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias T3 = vec4i;
alias T2 = array<T3, 5>;
@@ -2327,8 +2211,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Enabled_Param_ptr_i32_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a(pre : i32, p : ptr<private, i32>, post : i32) -> i32 {
return *(p);
}
@@ -2341,8 +2223,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a_F(pre : i32, p : ptr<private, i32>, post : i32) -> i32 {
return *(p);
}
@@ -2361,8 +2241,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Enabled_Param_ptr_i32_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a(pre : i32, p : ptr<private, i32>, post : i32) {
*(p) = 42;
}
@@ -2375,8 +2253,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a_F(pre : i32, p : ptr<private, i32>, post : i32) {
*(p) = 42;
}
@@ -2395,8 +2271,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Enabled_Param_ptr_i32_Via_struct_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
@@ -2413,8 +2287,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
@@ -2437,8 +2309,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Disabled_Param_ptr_i32_Via_struct_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
@@ -2463,8 +2333,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Enabled_Param_ptr_arr_i32_Via_struct_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
@@ -2481,8 +2349,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
@@ -2505,8 +2371,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Disabled_Param_ptr_arr_i32_Via_struct_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
@@ -2531,8 +2395,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Enabled_Param_ptr_i32_mixed) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
@@ -2553,8 +2415,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
@@ -2595,8 +2455,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Disabled_Param_ptr_i32_mixed) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
@@ -2627,8 +2485,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Enabled_CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -2689,8 +2545,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
}
@@ -2794,8 +2648,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Enabled_CallChaining2) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias T3 = vec4i;
alias T2 = array<T3, 5>;
alias T1 = array<T2, 5>;
@@ -2823,8 +2675,6 @@
auto* expect =
R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias T3 = vec4i;
alias T2 = array<T3, 5>;
@@ -2868,8 +2718,6 @@
TEST_F(DirectVariableAccessPrivateASTest, Disabled_CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
}
@@ -2943,8 +2791,6 @@
TEST_F(DirectVariableAccessFunctionASTest, Enabled_LocalPtr) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn f() {
var v : i32;
let p : ptr<function, i32> = &(v);
@@ -2961,8 +2807,6 @@
TEST_F(DirectVariableAccessFunctionASTest, Enabled_Param_ptr_i32_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a(pre : i32, p : ptr<function, i32>, post : i32) -> i32 {
return *(p);
}
@@ -2974,8 +2818,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a_F(pre : i32, p : ptr<function, i32>, post : i32) -> i32 {
return *(p);
}
@@ -2993,8 +2835,6 @@
TEST_F(DirectVariableAccessFunctionASTest, Enabled_Param_ptr_i32_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a(pre : i32, p : ptr<function, i32>, post : i32) {
*(p) = 42;
}
@@ -3006,8 +2846,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn a_F(pre : i32, p : ptr<function, i32>, post : i32) {
*(p) = 42;
}
@@ -3025,8 +2863,6 @@
TEST_F(DirectVariableAccessFunctionASTest, Enabled_Param_ptr_i32_Via_struct_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
@@ -3042,8 +2878,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
@@ -3065,8 +2899,6 @@
TEST_F(DirectVariableAccessFunctionASTest, Enabled_Param_ptr_arr_i32_Via_struct_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
@@ -3082,8 +2914,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
@@ -3105,8 +2935,6 @@
TEST_F(DirectVariableAccessFunctionASTest, Enabled_Param_ptr_i32_mixed) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
@@ -3127,8 +2955,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
@@ -3166,8 +2992,6 @@
TEST_F(DirectVariableAccessFunctionASTest, Enabled_CallChaining) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
};
@@ -3219,8 +3043,6 @@
auto* expect =
R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct Inner {
mat : mat3x4<f32>,
}
@@ -3275,8 +3097,6 @@
TEST_F(DirectVariableAccessFunctionASTest, Enabled_CallChaining2) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias T3 = vec4i;
alias T2 = array<T3, 5>;
alias T1 = array<T2, 5>;
@@ -3303,8 +3123,6 @@
auto* expect =
R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias T3 = vec4i;
alias T2 = array<T3, 5>;
@@ -3347,8 +3165,6 @@
TEST_F(DirectVariableAccessFunctionASTest, Disabled_Param_ptr_i32_Via_struct_read) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
@@ -3372,8 +3188,6 @@
TEST_F(DirectVariableAccessFunctionASTest, Disabled_Param_ptr_arr_i32_Via_struct_write) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
@@ -3406,8 +3220,6 @@
TEST_F(DirectVariableAccessComplexTest, Param_ptr_mixed_vec4i32_ViaMultiple) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<i32>,
};
@@ -3476,8 +3288,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<i32>,
}
@@ -3606,8 +3416,6 @@
TEST_F(DirectVariableAccessComplexTest, Indexing) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : array<array<array<array<i32, 9>, 9>, 9>, 50>;
fn a(i : i32) -> i32 { return i; }
@@ -3624,8 +3432,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : array<array<array<array<i32, 9>, 9>, 9>, 50>;
fn a(i : i32) -> i32 {
@@ -3650,8 +3456,6 @@
TEST_F(DirectVariableAccessComplexTest, IndexingInPtrCall) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : array<array<array<array<i32, 9>, 9>, 9>, 50>;
fn a(pre : i32, i : ptr<storage, i32>, post : i32) -> i32 {
@@ -3670,8 +3474,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : array<array<array<array<i32, 9>, 9>, 9>, 50>;
alias S_X_X_X_X = array<u32, 4u>;
@@ -3698,8 +3500,6 @@
TEST_F(DirectVariableAccessComplexTest, IndexingDualPointers) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : array<array<array<i32, 9>, 9>, 50>;
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 9>, 9>, 50>;
@@ -3717,8 +3517,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : array<array<array<i32, 9>, 9>, 50>;
@group(0) @binding(0) var<uniform> U : array<array<array<vec4<i32>, 9>, 9>, 50>;
diff --git a/src/tint/lang/wgsl/ast/transform/preserve_padding.cc b/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
index 39ebb2d..d6935a9 100644
--- a/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
+++ b/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
@@ -62,32 +62,25 @@
// Gather a list of assignments that need to be transformed.
std::unordered_set<const AssignmentStatement*> assignments_to_transform;
for (auto* node : ctx.src->ASTNodes().Objects()) {
- Switch(
- node, //
- [&](const AssignmentStatement* assign) {
- auto* ty = sem.GetVal(assign->lhs)->Type();
- if (assign->lhs->Is<PhonyExpression>()) {
- // Ignore phony assignment.
- return;
- }
- if (ty->As<core::type::Reference>()->AddressSpace() !=
- core::AddressSpace::kStorage) {
- // We only care about assignments that write to variables in the storage
- // address space, as nothing else is host-visible.
- return;
- }
- if (HasPadding(ty->UnwrapRef())) {
- // The assigned type has padding bytes, so we need to decompose the writes.
- assignments_to_transform.insert(assign);
- }
- },
- [&](const Enable* enable) {
- // Check if the full pointer parameters extension is already enabled.
- if (enable->HasExtension(
- wgsl::Extension::kChromiumExperimentalFullPtrParameters)) {
- ext_enabled = true;
- }
- });
+ Switch(node, //
+ [&](const AssignmentStatement* assign) {
+ auto* ty = sem.GetVal(assign->lhs)->Type();
+ if (assign->lhs->Is<PhonyExpression>()) {
+ // Ignore phony assignment.
+ return;
+ }
+ if (ty->As<core::type::Reference>()->AddressSpace() !=
+ core::AddressSpace::kStorage) {
+ // We only care about assignments that write to variables in the storage
+ // address space, as nothing else is host-visible.
+ return;
+ }
+ if (HasPadding(ty->UnwrapRef())) {
+ // The assigned type has padding bytes, so we need to decompose the
+ // writes.
+ assignments_to_transform.insert(assign);
+ }
+ });
}
if (assignments_to_transform.empty()) {
return SkipTransform;
@@ -127,13 +120,9 @@
// }
// It will be called by passing a pointer to the original LHS:
// assign_helper_T(&lhs, rhs);
- //
- // Since this requires passing pointers to the storage address space, this will also enable
- // the chromium_experimental_full_ptr_parameters extension.
const char* kDestParamName = "dest";
const char* kValueParamName = "value";
auto call_helper = [&](auto&& body) {
- EnableExtension();
auto helper = helpers.GetOrCreate(ty, [&] {
auto helper_name = b.Symbols().New("assign_and_preserve_padding");
tint::Vector<const Parameter*, 2> params = {
@@ -227,14 +216,6 @@
[&](Default) { return false; });
}
- /// Enable the full pointer parameters extension, if we have not already done so.
- void EnableExtension() {
- if (!ext_enabled) {
- b.Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
- ext_enabled = true;
- }
- }
-
private:
/// The program builder
ProgramBuilder b;
@@ -244,8 +225,6 @@
const sem::Info& sem = ctx.src->Sem();
/// Alias to the symbols in ctx.src
const SymbolTable& sym = ctx.src->Symbols();
- /// Flag to track whether we have already enabled the full pointer parameters extension.
- bool ext_enabled = false;
/// Map of semantic types to their assignment helper functions.
Hashmap<const core::type::Type*, Symbol, 8> helpers;
};
diff --git a/src/tint/lang/wgsl/ast/transform/preserve_padding_test.cc b/src/tint/lang/wgsl/ast/transform/preserve_padding_test.cc
index 469448b..be548fc 100644
--- a/src/tint/lang/wgsl/ast/transform/preserve_padding_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/preserve_padding_test.cc
@@ -119,8 +119,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
a : u32,
b : u32,
@@ -175,8 +173,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
a : u32,
b : u32,
@@ -227,8 +223,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
a : u32,
b : vec4<u32>,
@@ -267,8 +261,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
@size(16)
a : u32,
@@ -307,8 +299,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
@size(16)
a : u32,
@@ -362,8 +352,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S1 {
a1 : u32,
b1 : vec3<u32>,
@@ -424,8 +412,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> v : array<vec3<u32>, 4>;
fn assign_and_preserve_padding(dest : ptr<storage, array<vec3<u32>, 4u>, read_write>, value : array<vec3<u32>, 4u>) {
@@ -458,8 +444,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
alias Array = array<array<vec3<u32>, 4>, 3>;
@group(0) @binding(0) var<storage, read_write> v : Array;
@@ -503,8 +487,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
a : u32,
b : array<vec3<u32>, 4>,
@@ -551,8 +533,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> m : mat3x3<f32>;
fn assign_and_preserve_padding(dest : ptr<storage, mat3x3<f32>, read_write>, value : mat3x3<f32>) {
@@ -588,8 +568,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
struct S {
a : u32,
m : mat3x3<f32>,
@@ -631,8 +609,6 @@
)";
auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> arr_m : array<mat3x3<f32>, 4>;
fn assign_and_preserve_padding_1(dest : ptr<storage, mat3x3<f32>, read_write>, value : mat3x3<f32>) {
@@ -676,47 +652,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(PreservePaddingTest, AvoidDuplicateEnables) {
- auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
-struct S {
- @size(16) a : u32,
-}
-
-@group(0) @binding(0) var<storage, read_write> v : S;
-
-@compute @workgroup_size(1)
-fn foo() {
- v = S();
-}
-)";
-
- auto* expect = R"(
-enable chromium_experimental_full_ptr_parameters;
-
-struct S {
- @size(16)
- a : u32,
-}
-
-@group(0) @binding(0) var<storage, read_write> v : S;
-
-fn assign_and_preserve_padding(dest : ptr<storage, S, read_write>, value : S) {
- (*(dest)).a = value.a;
-}
-
-@compute @workgroup_size(1)
-fn foo() {
- assign_and_preserve_padding(&(v), S());
-}
-)";
-
- auto got = Run<PreservePadding>(src);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(PreservePaddingTest, NoModify_StructNoPadding) {
auto* src = R"(
struct S {
diff --git a/src/tint/lang/wgsl/ast/transform/robustness_test.cc b/src/tint/lang/wgsl/ast/transform/robustness_test.cc
index 647e669..1cd715f 100644
--- a/src/tint/lang/wgsl/ast/transform/robustness_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/robustness_test.cc
@@ -4614,8 +4614,6 @@
TEST_P(RobustnessTest, Read_PrivatePointerParameter_IndexWithConstant) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> a : array<i32, 4>;
fn x(pre : i32, p : ptr<private, i32>, post : i32) -> i32 {
@@ -4635,8 +4633,6 @@
/* ignore */ src,
/* clamp */ src,
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> a : array<i32, 4>;
fn x(pre : i32, p : ptr<private, i32>, p_predicate : bool, post : i32) -> i32 {
@@ -4663,8 +4659,6 @@
TEST_P(RobustnessTest, Read_WorkgroupPointerParameter_IndexWithConstant) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : array<i32, 4>;
fn x(pre : i32, p : ptr<workgroup, i32>, post : i32) -> i32 {
@@ -4684,8 +4678,6 @@
/* ignore */ src,
/* clamp */ src,
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : array<i32, 4>;
fn x(pre : i32, p : ptr<workgroup, i32>, p_predicate : bool, post : i32) -> i32 {
@@ -4712,8 +4704,6 @@
TEST_P(RobustnessTest, Read_UniformPointerParameter_IndexWithConstant) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> a : array<vec4i, 4>;
fn x(pre : vec4i, p : ptr<uniform, vec4i>, post : vec4i) -> vec4i {
@@ -4733,8 +4723,6 @@
/* ignore */ src,
/* clamp */ src,
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> a : array<vec4i, 4>;
fn x(pre : vec4i, p : ptr<uniform, vec4i>, p_predicate : bool, post : vec4i) -> vec4i {
@@ -4761,8 +4749,6 @@
TEST_P(RobustnessTest, Read_StoragePointerParameter_IndexWithConstant) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> a : array<vec4i, 4>;
fn x(pre : vec4i, p : ptr<storage, vec4i>, post : vec4i) -> vec4i {
@@ -4782,8 +4768,6 @@
/* ignore */ src,
/* clamp */ src,
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> a : array<vec4i, 4>;
fn x(pre : vec4i, p : ptr<storage, vec4i>, p_predicate : bool, post : vec4i) -> vec4i {
@@ -4810,8 +4794,6 @@
TEST_P(RobustnessTest, Read_FunctionPointerParameter_IndexWithConstant) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn x(pre : i32, p : ptr<function, i32>, post : i32) -> i32 {
return ((pre + *(p)) + post);
}
@@ -4830,8 +4812,6 @@
/* ignore */ src,
/* clamp */ src,
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn x(pre : i32, p : ptr<function, i32>, p_predicate : bool, post : i32) -> i32 {
var predicated_expr : i32;
if (p_predicate) {
@@ -4857,8 +4837,6 @@
TEST_P(RobustnessTest, Read_PrivatePointerParameter_IndexWithLet) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> a : array<i32, 4>;
fn x(pre : i32, p : ptr<private, i32>, post : i32) -> i32 {
@@ -4878,8 +4856,6 @@
auto* expect = Expect(GetParam(),
/* ignore */ src,
/* clamp */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> a : array<i32, 4>;
fn x(pre : i32, p : ptr<private, i32>, post : i32) -> i32 {
@@ -4896,8 +4872,6 @@
}
)",
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> a : array<i32, 4>;
fn x(pre : i32, p : ptr<private, i32>, p_predicate : bool, post : i32) -> i32 {
@@ -4927,8 +4901,6 @@
TEST_P(RobustnessTest, Read_WorkgroupPointerParameter_IndexWithLet) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : array<i32, 4>;
fn x(pre : i32, p : ptr<workgroup, i32>, post : i32) -> i32 {
@@ -4948,8 +4920,6 @@
auto* expect = Expect(GetParam(),
/* ignore */ src,
/* clamp */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : array<i32, 4>;
fn x(pre : i32, p : ptr<workgroup, i32>, post : i32) -> i32 {
@@ -4966,8 +4936,6 @@
}
)",
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : array<i32, 4>;
fn x(pre : i32, p : ptr<workgroup, i32>, p_predicate : bool, post : i32) -> i32 {
@@ -4997,8 +4965,6 @@
TEST_P(RobustnessTest, Read_UniformPointerParameter_IndexWithLet) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> a : array<vec4i, 4>;
fn x(pre : vec4i, p : ptr<uniform, vec4i>, post : vec4i) -> vec4i {
@@ -5018,8 +4984,6 @@
auto* expect = Expect(GetParam(),
/* ignore */ src,
/* clamp */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> a : array<vec4i, 4>;
fn x(pre : vec4i, p : ptr<uniform, vec4i>, post : vec4i) -> vec4i {
@@ -5036,8 +5000,6 @@
}
)",
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> a : array<vec4i, 4>;
fn x(pre : vec4i, p : ptr<uniform, vec4i>, p_predicate : bool, post : vec4i) -> vec4i {
@@ -5067,8 +5029,6 @@
TEST_P(RobustnessTest, Read_StoragePointerParameter_IndexWithLet) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> a : array<vec4i, 4>;
fn x(pre : vec4i, p : ptr<storage, vec4i>, post : vec4i) -> vec4i {
@@ -5088,8 +5048,6 @@
auto* expect = Expect(GetParam(),
/* ignore */ src,
/* clamp */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> a : array<vec4i, 4>;
fn x(pre : vec4i, p : ptr<storage, vec4i>, post : vec4i) -> vec4i {
@@ -5106,8 +5064,6 @@
}
)",
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> a : array<vec4i, 4>;
fn x(pre : vec4i, p : ptr<storage, vec4i>, p_predicate : bool, post : vec4i) -> vec4i {
@@ -5137,8 +5093,6 @@
TEST_P(RobustnessTest, Read_FunctionPointerParameter_IndexWithLet) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn x(pre : i32, p : ptr<function, i32>, post : i32) -> i32 {
return ((pre + *(p)) + post);
}
@@ -5157,8 +5111,6 @@
auto* expect = Expect(GetParam(),
/* ignore */ src,
/* clamp */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn x(pre : i32, p : ptr<function, i32>, post : i32) -> i32 {
return ((pre + *(p)) + post);
}
@@ -5174,8 +5126,6 @@
}
)",
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn x(pre : i32, p : ptr<function, i32>, p_predicate : bool, post : i32) -> i32 {
var predicated_expr : i32;
if (p_predicate) {
@@ -5204,8 +5154,6 @@
TEST_P(RobustnessTest, Write_PrivatePointerParameter_IndexWithConstant) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> a : array<i32, 4>;
fn x(pre : i32, p : ptr<private, i32>, post : i32) {
@@ -5225,8 +5173,6 @@
/* ignore */ src,
/* clamp */ src,
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> a : array<i32, 4>;
fn x(pre : i32, p : ptr<private, i32>, p_predicate : bool, post : i32) {
@@ -5251,8 +5197,6 @@
TEST_P(RobustnessTest, Write_WorkgroupPointerParameter_IndexWithConstant) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : array<i32, 4>;
fn x(pre : i32, p : ptr<workgroup, i32>, post : i32) {
@@ -5272,8 +5216,6 @@
/* ignore */ src,
/* clamp */ src,
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : array<i32, 4>;
fn x(pre : i32, p : ptr<workgroup, i32>, p_predicate : bool, post : i32) {
@@ -5298,8 +5240,6 @@
TEST_P(RobustnessTest, Write_StoragePointerParameter_IndexWithConstant) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> a : array<i32, 4>;
fn x(pre : i32, p : ptr<storage, i32, read_write>, post : i32) {
@@ -5319,8 +5259,6 @@
/* ignore */ src,
/* clamp */ src,
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> a : array<i32, 4>;
fn x(pre : i32, p : ptr<storage, i32, read_write>, p_predicate : bool, post : i32) {
@@ -5345,8 +5283,6 @@
TEST_P(RobustnessTest, Write_FunctionPointerParameter_IndexWithConstant) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn x(pre : i32, p : ptr<function, i32>, post : i32) {
*(p) = (pre + post);
}
@@ -5365,8 +5301,6 @@
/* ignore */ src,
/* clamp */ src,
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn x(pre : i32, p : ptr<function, i32>, p_predicate : bool, post : i32) {
if (p_predicate) {
*(p) = (pre + post);
@@ -5390,8 +5324,6 @@
TEST_P(RobustnessTest, Write_PrivatePointerParameter_IndexWithLet) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> a : array<i32, 4>;
fn x(pre : i32, p : ptr<private, i32>, post : i32) {
@@ -5411,8 +5343,6 @@
auto* expect = Expect(GetParam(),
/* ignore */ src,
/* clamp */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> a : array<i32, 4>;
fn x(pre : i32, p : ptr<private, i32>, post : i32) {
@@ -5429,8 +5359,6 @@
}
)",
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> a : array<i32, 4>;
fn x(pre : i32, p : ptr<private, i32>, p_predicate : bool, post : i32) {
@@ -5458,8 +5386,6 @@
TEST_P(RobustnessTest, Write_WorkgroupPointerParameter_IndexWithLet) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : array<i32, 4>;
fn x(pre : i32, p : ptr<workgroup, i32>, post : i32) {
@@ -5479,8 +5405,6 @@
auto* expect = Expect(GetParam(),
/* ignore */ src,
/* clamp */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : array<i32, 4>;
fn x(pre : i32, p : ptr<workgroup, i32>, post : i32) {
@@ -5497,8 +5421,6 @@
}
)",
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> a : array<i32, 4>;
fn x(pre : i32, p : ptr<workgroup, i32>, p_predicate : bool, post : i32) {
@@ -5526,8 +5448,6 @@
TEST_P(RobustnessTest, Write_StoragePointerParameter_IndexWithLet) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> a : array<i32, 4>;
fn x(pre : i32, p : ptr<storage, i32, read_write>, post : i32) {
@@ -5547,8 +5467,6 @@
auto* expect = Expect(GetParam(),
/* ignore */ src,
/* clamp */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> a : array<i32, 4>;
fn x(pre : i32, p : ptr<storage, i32, read_write>, post : i32) {
@@ -5565,8 +5483,6 @@
}
)",
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> a : array<i32, 4>;
fn x(pre : i32, p : ptr<storage, i32, read_write>, p_predicate : bool, post : i32) {
@@ -5594,8 +5510,6 @@
TEST_P(RobustnessTest, Write_FunctionPointerParameter_IndexWithLet) {
auto* src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn x(pre : i32, p : ptr<function, i32>, post : i32) {
*(p) = (pre + post);
}
@@ -5614,8 +5528,6 @@
auto* expect = Expect(GetParam(),
/* ignore */ src,
/* clamp */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn x(pre : i32, p : ptr<function, i32>, post : i32) {
*(p) = (pre + post);
}
@@ -5631,8 +5543,6 @@
}
)",
/* predicate */ R"(
-enable chromium_experimental_full_ptr_parameters;
-
fn x(pre : i32, p : ptr<function, i32>, p_predicate : bool, post : i32) {
if (p_predicate) {
*(p) = (pre + post);
diff --git a/src/tint/lang/wgsl/extension.cc b/src/tint/lang/wgsl/extension.cc
index c2f1762..3069ccf 100644
--- a/src/tint/lang/wgsl/extension.cc
+++ b/src/tint/lang/wgsl/extension.cc
@@ -48,9 +48,6 @@
if (str == "chromium_experimental_framebuffer_fetch") {
return Extension::kChromiumExperimentalFramebufferFetch;
}
- if (str == "chromium_experimental_full_ptr_parameters") {
- return Extension::kChromiumExperimentalFullPtrParameters;
- }
if (str == "chromium_experimental_pixel_local") {
return Extension::kChromiumExperimentalPixelLocal;
}
@@ -80,8 +77,6 @@
return "chromium_disable_uniformity_analysis";
case Extension::kChromiumExperimentalFramebufferFetch:
return "chromium_experimental_framebuffer_fetch";
- case Extension::kChromiumExperimentalFullPtrParameters:
- return "chromium_experimental_full_ptr_parameters";
case Extension::kChromiumExperimentalPixelLocal:
return "chromium_experimental_pixel_local";
case Extension::kChromiumExperimentalPushConstant:
diff --git a/src/tint/lang/wgsl/extension.h b/src/tint/lang/wgsl/extension.h
index 41edcba..7de7e82 100644
--- a/src/tint/lang/wgsl/extension.h
+++ b/src/tint/lang/wgsl/extension.h
@@ -48,7 +48,6 @@
kUndefined,
kChromiumDisableUniformityAnalysis,
kChromiumExperimentalFramebufferFetch,
- kChromiumExperimentalFullPtrParameters,
kChromiumExperimentalPixelLocal,
kChromiumExperimentalPushConstant,
kChromiumExperimentalSubgroups,
@@ -75,22 +74,16 @@
Extension ParseExtension(std::string_view str);
constexpr std::string_view kExtensionStrings[] = {
- "chromium_disable_uniformity_analysis",
- "chromium_experimental_framebuffer_fetch",
- "chromium_experimental_full_ptr_parameters",
- "chromium_experimental_pixel_local",
- "chromium_experimental_push_constant",
- "chromium_experimental_subgroups",
- "chromium_internal_dual_source_blending",
- "chromium_internal_relaxed_uniform_layout",
- "f16",
+ "chromium_disable_uniformity_analysis", "chromium_experimental_framebuffer_fetch",
+ "chromium_experimental_pixel_local", "chromium_experimental_push_constant",
+ "chromium_experimental_subgroups", "chromium_internal_dual_source_blending",
+ "chromium_internal_relaxed_uniform_layout", "f16",
};
/// All extensions
static constexpr Extension kAllExtensions[] = {
Extension::kChromiumDisableUniformityAnalysis,
Extension::kChromiumExperimentalFramebufferFetch,
- Extension::kChromiumExperimentalFullPtrParameters,
Extension::kChromiumExperimentalPixelLocal,
Extension::kChromiumExperimentalPushConstant,
Extension::kChromiumExperimentalSubgroups,
diff --git a/src/tint/lang/wgsl/extension_bench.cc b/src/tint/lang/wgsl/extension_bench.cc
index c2e6bd2..70c0d73 100644
--- a/src/tint/lang/wgsl/extension_bench.cc
+++ b/src/tint/lang/wgsl/extension_bench.cc
@@ -59,55 +59,48 @@
"chromium_experimental_vramebuffeii_fetch",
"chro8WWum_experimental_framebuffer_fetch",
"chromium_eperimenxxMl_framebuffer_fetch",
- "chromium_expeggimeXtal_full_ptr_paraeters",
- "chromium_expVrimental_full_ptr_puraXeer",
- "chromium_experimental_full_ptr3parameters",
- "chromium_experimental_full_ptr_parameters",
- "chromium_experimentalEfull_ptr_parameters",
- "chromium_experimentalfull_ptr_PPaTTameters",
- "chromium_ddxperimental_fullptrxxparameters",
- "chromium_experi44ental_pixel_local",
- "chromium_experimental_VVSixel_local",
- "chroRium_experimental_pix22Rlocal",
+ "chromum_experimental_pixeX_loggal",
+ "chromium_expVrXmntal_ixel_local",
+ "3hromium_experimental_pixel_local",
"chromium_experimental_pixel_local",
- "chromiuF_experiment9lpixel_local",
- "chromium_experimental_pixel_loca",
- "Vhromium_expeOOimentalHpixRRl_lcal",
- "chromiym_experimental_push_contant",
- "nnhro77ium_experimenGal_push_conrrllant",
- "chromium_experimental_push_c4nstan00",
+ "chromium_eEperimental_pixel_local",
+ "chTTomiu_experimentaPP_pixel_local",
+ "cxxromium_expddrimenal_pixel_local",
+ "c44romium_experimental_push_constant",
+ "chromium_experimental_pSSsVV_constant",
+ "chrom22Rm_experimental_pushRonstant",
"chromium_experimental_push_constant",
- "chooomum_experimental_ush_constat",
- "chromium_xperimntal_zzush_constant",
- "chromi11m_experimepptal_psh_ciistant",
- "chromium_experimental_subgroXXps",
- "chromium55eIIperimental_subgnno99ps",
- "chraamiuSS_experimentaHHr_subgrouYs",
+ "chromium_exp9rimFntal_ush_constant",
+ "chrmium_experimental_push_constant",
+ "cOOromium_experiVeHtal_puh_conRRtant",
+ "chromium_eperimental_sybgroups",
+ "chrorri77mGexperimllntal_subgrnnups",
+ "chromium_exp4rimen00al_subgroups",
"chromium_experimental_subgroups",
- "chkkomium_eperimntal_subgroup",
- "jhromium_experRmental_subgogps",
- "chromiubexperiental_subgroups",
- "chromium_internal_dujl_source_blending",
- "chromium_intenal_dual_source_blending",
- "chqomium_internal_dual_source_beding",
+ "chromium_exprimenal_ubgrouoos",
+ "chrmiumexperimenzzal_subgroups",
+ "chrmi11m_experppmeiita_subgroups",
+ "chromium_internal_dual_sourcXX_blending",
+ "chromium_internal_dual_99ou5IInce_blending",
+ "crrroSSium_internYlaadual_source_bHHending",
"chromium_internal_dual_source_blending",
- "chroium_NNnternal_dual_source_blending",
- "chovvium_internal_dual_source_lending",
- "chromium_internQQl_dual_sorce_blending",
- "chromirm_intenal_rfflaxed_unifrm_layout",
- "chromium_internal_jelaxed_uniform_layout",
- "chromium_interna_relNNxed_uwwiform_lay82t",
+ "chromium_internakk_ualsourc_blendHng",
+ "chromium_inRRrnal_dujl_sourceblgnding",
+ "chromiuminternal_duab_source_blendin",
+ "chromium_internal_relaxed_uniform_lajout",
+ "chromium_internal_relxed_uniform_layout",
+ "chroium_inqernal_rlaxed_uniform_layout",
"chromium_internal_relaxed_uniform_layout",
- "chromium_internal_relaxed_uniform_layut",
- "chromium_internal_relaxed_rrniform_layout",
- "chromium_internal_relaxedGuniform_layout",
- "FF16",
- "",
- "rr1",
+ "chromium_internNNl_relaxed_uniform_layou",
+ "chromium_internal_relaxvvd_unifom_laout",
+ "chromium_internalrelaxed_uniQQorm_layout",
+ "ff",
+ "fj6",
+ "wNN2",
"f16",
- "1",
- "DJ1",
- "",
+ "f6",
+ "rr16",
+ "fG6",
};
for (auto _ : state) {
for (auto* str : kStrings) {
diff --git a/src/tint/lang/wgsl/extension_test.cc b/src/tint/lang/wgsl/extension_test.cc
index 08cda9b..8bcbd0c 100644
--- a/src/tint/lang/wgsl/extension_test.cc
+++ b/src/tint/lang/wgsl/extension_test.cc
@@ -59,8 +59,6 @@
static constexpr Case kValidCases[] = {
{"chromium_disable_uniformity_analysis", Extension::kChromiumDisableUniformityAnalysis},
{"chromium_experimental_framebuffer_fetch", Extension::kChromiumExperimentalFramebufferFetch},
- {"chromium_experimental_full_ptr_parameters",
- Extension::kChromiumExperimentalFullPtrParameters},
{"chromium_experimental_pixel_local", Extension::kChromiumExperimentalPixelLocal},
{"chromium_experimental_push_constant", Extension::kChromiumExperimentalPushConstant},
{"chromium_experimental_subgroups", Extension::kChromiumExperimentalSubgroups},
@@ -76,27 +74,24 @@
{"chromium_experimental_framebuf1er_fetch", Extension::kUndefined},
{"chromium_experiqqntal_framebuffer_fetch", Extension::kUndefined},
{"chromium_experimental_framebuffll77_fetch", Extension::kUndefined},
- {"chroium_experimental_full_ptr_paqqppmetHHrs", Extension::kUndefined},
- {"chrium_evperiental_full_ptr_paraceters", Extension::kUndefined},
- {"chromium_expGimental_fullbptr_parameters", Extension::kUndefined},
- {"vhromium_experimental_pixel_liical", Extension::kUndefined},
- {"chromium_experiment8l_pixel_lWWcal", Extension::kUndefined},
- {"chromium_expeimentMl_xxixel_local", Extension::kUndefined},
- {"chrXmium_experimeggtal_ush_constant", Extension::kUndefined},
- {"chromiu_experVmentalpusX_constant", Extension::kUndefined},
- {"chro3ium_experimental_push_constant", Extension::kUndefined},
- {"cEromium_experimental_subgroups", Extension::kUndefined},
- {"TThromium_experiPPental_sugroups", Extension::kUndefined},
- {"chddomium_experimental_subgroxxs", Extension::kUndefined},
- {"chromium_internal_44ual_source_blending", Extension::kUndefined},
- {"chromium_inteSSnal_dual_source_blendinVV", Extension::kUndefined},
- {"chromiuR_interna22dual_source_blenRing", Extension::kUndefined},
- {"chromium_int9rnal_relaxed_Fnifor_layout", Extension::kUndefined},
- {"chrmium_internal_relaxed_uniform_layout", Extension::kUndefined},
- {"VRhHomium_internal_relaxd_uniform_OOayout", Extension::kUndefined},
- {"y1", Extension::kUndefined},
- {"l77rrn6", Extension::kUndefined},
- {"4016", Extension::kUndefined},
+ {"chroqqppum_expermental_pixel_HHocal", Extension::kUndefined},
+ {"chromium_experimenta_piel_occl", Extension::kUndefined},
+ {"chromium_exeGimental_pixel_local", Extension::kUndefined},
+ {"chvomium_experimental_push_constiint", Extension::kUndefined},
+ {"chromiu8WWexperimental_push_constant", Extension::kUndefined},
+ {"chromium_experiMental_push_costanxx", Extension::kUndefined},
+ {"chromiuX_experimentl_sugggroups", Extension::kUndefined},
+ {"chromiu_exuerimntal_XVbgroups", Extension::kUndefined},
+ {"chromium_experimen3al_subgroups", Extension::kUndefined},
+ {"chromium_internal_dual_soErce_blending", Extension::kUndefined},
+ {"chromiuPP_internal_dual_sourceblenTTing", Extension::kUndefined},
+ {"chromim_internadd_dual_sxxurce_blending", Extension::kUndefined},
+ {"chromium_interna44_relaxed_uniform_layout", Extension::kUndefined},
+ {"chromium_internal_relaxed_uniformSSlayouVV", Extension::kUndefined},
+ {"chromiumRnteRnal_re22axed_uniform_layout", Extension::kUndefined},
+ {"96", Extension::kUndefined},
+ {"f1", Extension::kUndefined},
+ {"VOR6", Extension::kUndefined},
};
using ExtensionParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/lang/wgsl/features/language_feature.cc b/src/tint/lang/wgsl/features/language_feature.cc
index 4561eb0..f0391dc 100644
--- a/src/tint/lang/wgsl/features/language_feature.cc
+++ b/src/tint/lang/wgsl/features/language_feature.cc
@@ -66,6 +66,9 @@
if (str == "readonly_and_readwrite_storage_textures") {
return LanguageFeature::kReadonlyAndReadwriteStorageTextures;
}
+ if (str == "unrestricted_pointer_parameters") {
+ return LanguageFeature::kUnrestrictedPointerParameters;
+ }
return LanguageFeature::kUndefined;
}
@@ -89,6 +92,8 @@
return "pointer_composite_access";
case LanguageFeature::kReadonlyAndReadwriteStorageTextures:
return "readonly_and_readwrite_storage_textures";
+ case LanguageFeature::kUnrestrictedPointerParameters:
+ return "unrestricted_pointer_parameters";
}
return "<unknown>";
}
diff --git a/src/tint/lang/wgsl/features/language_feature.h b/src/tint/lang/wgsl/features/language_feature.h
index aa7315b..b7aedbb 100644
--- a/src/tint/lang/wgsl/features/language_feature.h
+++ b/src/tint/lang/wgsl/features/language_feature.h
@@ -54,6 +54,7 @@
kPacked4X8IntegerDotProduct,
kPointerCompositeAccess,
kReadonlyAndReadwriteStorageTextures,
+ kUnrestrictedPointerParameters,
};
/// @param value the enum value
@@ -74,6 +75,7 @@
"packed_4x8_integer_dot_product",
"pointer_composite_access",
"readonly_and_readwrite_storage_textures",
+ "unrestricted_pointer_parameters",
};
/// All features
@@ -86,6 +88,7 @@
LanguageFeature::kPacked4X8IntegerDotProduct,
LanguageFeature::kPointerCompositeAccess,
LanguageFeature::kReadonlyAndReadwriteStorageTextures,
+ LanguageFeature::kUnrestrictedPointerParameters,
};
} // namespace tint::wgsl
diff --git a/src/tint/lang/wgsl/features/status.cc b/src/tint/lang/wgsl/features/status.cc
index f8297ea..2fe2f02 100644
--- a/src/tint/lang/wgsl/features/status.cc
+++ b/src/tint/lang/wgsl/features/status.cc
@@ -33,9 +33,10 @@
FeatureStatus GetLanguageFeatureStatus(LanguageFeature f) {
switch (f) {
- case LanguageFeature::kReadonlyAndReadwriteStorageTextures:
case LanguageFeature::kPacked4X8IntegerDotProduct:
case LanguageFeature::kPointerCompositeAccess:
+ case LanguageFeature::kReadonlyAndReadwriteStorageTextures:
+ case LanguageFeature::kUnrestrictedPointerParameters:
return FeatureStatus::kExperimental;
case LanguageFeature::kUndefined:
return FeatureStatus::kUnknown;
diff --git a/src/tint/lang/wgsl/helpers/append_vector_test.cc b/src/tint/lang/wgsl/helpers/append_vector_test.cc
index f1a95d9..26ebba4 100644
--- a/src/tint/lang/wgsl/helpers/append_vector_test.cc
+++ b/src/tint/lang/wgsl/helpers/append_vector_test.cc
@@ -49,7 +49,7 @@
auto* vec_12 = Call<vec2<i32>>(scalar_1, scalar_2);
WrapInFunction(vec_12, scalar_3);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
@@ -90,7 +90,7 @@
auto* vec_12 = Call<vec2<i32>>(scalar_1, scalar_2);
WrapInFunction(vec_12, scalar_3);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
@@ -138,7 +138,7 @@
auto* vec_12 = Call<vec2<i32>>(uvec_12);
WrapInFunction(vec_12, scalar_3);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
@@ -187,7 +187,7 @@
auto* vec_12 = Call<vec2<i32>>(scalar_1, scalar_2);
WrapInFunction(vec_12, scalar_3);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
@@ -233,7 +233,7 @@
auto* vec_123 = Call<vec3<i32>>(scalar_1, scalar_2, scalar_3);
WrapInFunction(vec_123, scalar_4);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
@@ -276,7 +276,7 @@
auto* scalar_3 = Expr(3_i);
WrapInFunction(vec_12, scalar_3);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
@@ -315,7 +315,7 @@
auto* vec_12 = Call<vec2<i32>>(scalar_1, scalar_2);
WrapInFunction(vec_12, scalar_3);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
@@ -356,7 +356,7 @@
auto* scalar_3 = Expr("scalar_3");
WrapInFunction(vec_12, scalar_3);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
@@ -394,7 +394,7 @@
auto* scalar_3 = Expr("scalar_3");
WrapInFunction(vec_12, scalar_3);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
@@ -436,7 +436,7 @@
auto* scalar_3 = Expr("scalar_3");
WrapInFunction(vec_12, scalar_3);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
@@ -472,7 +472,7 @@
auto* vec000 = Call<vec3<i32>>();
WrapInFunction(vec000, scalar);
- resolver::Resolver resolver(this, {});
+ resolver::Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_TRUE(resolver.Resolve());
ASSERT_THAT(resolver.Diagnostics(), testing::IsEmpty());
diff --git a/src/tint/lang/wgsl/language_feature_test.cc b/src/tint/lang/wgsl/language_feature_test.cc
index 991f5db..dc3b564 100644
--- a/src/tint/lang/wgsl/language_feature_test.cc
+++ b/src/tint/lang/wgsl/language_feature_test.cc
@@ -67,6 +67,7 @@
{"pointer_composite_access", LanguageFeature::kPointerCompositeAccess},
{"readonly_and_readwrite_storage_textures",
LanguageFeature::kReadonlyAndReadwriteStorageTextures},
+ {"unrestricted_pointer_parameters", LanguageFeature::kUnrestrictedPointerParameters},
};
static constexpr Case kInvalidCases[] = {
@@ -94,6 +95,9 @@
{"readonlF_and_readwrite_st9rage_textues", LanguageFeature::kUndefined},
{"readonly_and_radwrite_storage_textures", LanguageFeature::kUndefined},
{"readonly_and_readwrite_sOOrage_tVxRRures", LanguageFeature::kUndefined},
+ {"unrestrictd_pointer_payameters", LanguageFeature::kUndefined},
+ {"unrerrt77iGted_poillter_paramenners", LanguageFeature::kUndefined},
+ {"unrestricted4point00r_parameters", LanguageFeature::kUndefined},
};
using LanguageFeatureParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc b/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
index 0af6015..6f689b3 100644
--- a/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
@@ -205,7 +205,7 @@
// Error when unknown extension found
EXPECT_TRUE(p->has_error());
EXPECT_EQ(p->error(), R"(1:8: expected extension
-Possible values: 'chromium_disable_uniformity_analysis', 'chromium_experimental_framebuffer_fetch', 'chromium_experimental_full_ptr_parameters', 'chromium_experimental_pixel_local', 'chromium_experimental_push_constant', 'chromium_experimental_subgroups', 'chromium_internal_dual_source_blending', 'chromium_internal_relaxed_uniform_layout', 'f16')");
+Possible values: 'chromium_disable_uniformity_analysis', 'chromium_experimental_framebuffer_fetch', 'chromium_experimental_pixel_local', 'chromium_experimental_push_constant', 'chromium_experimental_subgroups', 'chromium_internal_dual_source_blending', 'chromium_internal_relaxed_uniform_layout', 'f16')");
auto program = p->program();
auto& ast = program.AST();
EXPECT_EQ(ast.Enables().Length(), 0u);
diff --git a/src/tint/lang/wgsl/resolver/builtin_enum_test.cc b/src/tint/lang/wgsl/resolver/builtin_enum_test.cc
index cc7bbeb..14e266d 100644
--- a/src/tint/lang/wgsl/resolver/builtin_enum_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_enum_test.cc
@@ -70,7 +70,6 @@
TEST_P(ResolverAddressSpaceUsedWithTemplateArgs, Test) {
// fn f(p : ptr<ADDRESS_SPACE<T>, f32) {}
- Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
auto* tmpl = Ident(Source{{12, 34}}, GetParam(), "T");
Func("f", Vector{Param("p", ty("ptr", tmpl, ty.f32()))}, ty.void_(), tint::Empty);
EXPECT_FALSE(r()->Resolve());
diff --git a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
index 3bae4eb..638a54c 100644
--- a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
@@ -568,7 +568,7 @@
Vector{Expr(1_u), Expr(2_u)})),
});
- auto resolver = Resolver(this, {});
+ Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: built-in function 'dot4I8Packed' requires the "
@@ -597,7 +597,7 @@
Vector{Expr(1_u), Expr(2_u)})),
});
- auto resolver = Resolver(this, {});
+ Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: built-in function 'dot4U8Packed' requires the "
@@ -624,7 +624,7 @@
Return(Call(Source{Source::Location{12, 34}}, "pack4xI8", Call<vec4<i32>>())),
});
- auto resolver = Resolver(this, {});
+ Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: built-in function 'pack4xI8' requires the "
@@ -651,7 +651,7 @@
Return(Call(Source{Source::Location{12, 34}}, "pack4xU8", Call<vec4<u32>>())),
});
- auto resolver = Resolver(this, {});
+ Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: built-in function 'pack4xU8' requires the "
@@ -678,7 +678,7 @@
Return(Call(Source{Source::Location{12, 34}}, "pack4xI8Clamp", Call<vec4<i32>>())),
});
- auto resolver = Resolver(this, {});
+ Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: built-in function 'pack4xI8Clamp' requires the "
@@ -705,7 +705,7 @@
Return(Call(Source{Source::Location{12, 34}}, "pack4xU8Clamp", Call<vec4<u32>>())),
});
- auto resolver = Resolver(this, {});
+ Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: built-in function 'pack4xU8Clamp' requires the "
@@ -732,7 +732,7 @@
Return(Call(Source{Source::Location{12, 34}}, "unpack4xI8", Call<u32>())),
});
- auto resolver = Resolver(this, {});
+ Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: built-in function 'unpack4xI8' requires the "
@@ -759,7 +759,7 @@
Return(Call(Source{Source::Location{12, 34}}, "unpack4xU8", Call<u32>())),
});
- auto resolver = Resolver(this, {});
+ Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: built-in function 'unpack4xU8' requires the "
@@ -988,7 +988,7 @@
CallStmt(Call(Source{Source::Location{12, 34}}, "textureBarrier")),
});
- auto resolver = Resolver(this, {});
+ Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: built-in function 'textureBarrier' requires the "
diff --git a/src/tint/lang/wgsl/resolver/call_validation_test.cc b/src/tint/lang/wgsl/resolver/call_validation_test.cc
index 47da663..9a0d7c1 100644
--- a/src/tint/lang/wgsl/resolver/call_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/call_validation_test.cc
@@ -146,7 +146,8 @@
EXPECT_EQ(r()->error(), "12:34 error: cannot take the address of expression");
}
-TEST_F(ResolverCallValidationTest, PointerArgument_AddressOfFunctionMember) {
+TEST_F(ResolverCallValidationTest,
+ PointerArgument_AddressOfFunctionMember_WithoutUnrestrictedPointerParameters) {
// struct S { m: i32; };
// fn foo(p: ptr<function, i32>) {}
// fn main() {
@@ -164,22 +165,23 @@
CallStmt(Call("foo", AddressOf(Source{{12, 34}}, MemberAccessor("v", "m")))),
});
- EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(),
- "12:34 error: arguments of pointer type must not point to a subset of the "
- "originating variable");
+ Resolver r{this, wgsl::AllowedFeatures{}};
+
+ EXPECT_FALSE(r.Resolve());
+ EXPECT_EQ(
+ r.error(),
+ R"(12:34 error: arguments of pointer type must not point to a subset of the originating variable)");
}
TEST_F(ResolverCallValidationTest,
- PointerArgument_AddressOfFunctionMember_WithFullPtrParametersExt) {
- // enable chromium_experimental_full_ptr_parameters;
+ PointerArgument_AddressOfFunctionMember_WithUnrestrictedPointerParameters) {
// struct S { m: i32; };
// fn foo(p: ptr<function, i32>) {}
// fn main() {
// var v : S;
// foo(&v.m);
// }
- Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
+
auto* S = Structure("S", Vector{
Member("m", ty.i32()),
});
@@ -322,7 +324,7 @@
EXPECT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_F(ResolverCallValidationTest, LetPointer_NotWholeVar) {
+TEST_F(ResolverCallValidationTest, LetPointer_NotWholeVar_WithoutUnrestrictedPointerParameters) {
// fn foo(p : ptr<function, i32>) {}
// @fragment
// fn main() {
@@ -344,14 +346,14 @@
Vector{
Stage(ast::PipelineStage::kFragment),
});
- EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(),
+ Resolver r(this, wgsl::AllowedFeatures{});
+ EXPECT_FALSE(r.Resolve());
+ EXPECT_EQ(r.error(),
"12:34 error: arguments of pointer type must not point to a subset of the "
"originating variable");
}
-TEST_F(ResolverCallValidationTest, LetPointer_NotWholeVar_WithFullPtrParametersExt) {
- // enable chromium_experimental_full_ptr_parameters;
+TEST_F(ResolverCallValidationTest, LetPointer_NotWholeVar_WithUnrestrictedPointerParameters) {
// fn foo(p : ptr<function, i32>) {}
// @fragment
// fn main() {
@@ -359,7 +361,7 @@
// let p: ptr<function, i32> = &(v[0]);
// x(p);
// }
- Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
+
Func("foo",
Vector{
Param("p", ty.ptr<function, i32>()),
@@ -406,7 +408,8 @@
EXPECT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_F(ResolverCallValidationTest, ComplexPointerChain_NotWholeVar) {
+TEST_F(ResolverCallValidationTest,
+ ComplexPointerChain_NotWholeVar_WithoutUnrestrictedPointerParameters) {
// fn foo(p : ptr<function, i32>) {}
// @fragment
// fn main() {
@@ -432,14 +435,15 @@
Vector{
Stage(ast::PipelineStage::kFragment),
});
- EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(),
+ Resolver r{this, {}};
+ EXPECT_FALSE(r.Resolve());
+ EXPECT_EQ(r.error(),
"12:34 error: arguments of pointer type must not point to a subset of the "
"originating variable");
}
-TEST_F(ResolverCallValidationTest, ComplexPointerChain_NotWholeVar_WithFullPtrParametersExt) {
- // enable chromium_experimental_full_ptr_parameters;
+TEST_F(ResolverCallValidationTest,
+ ComplexPointerChain_NotWholeVar_WithUnrestrictedPointerParameters) {
// fn foo(p : ptr<function, i32>) {}
// @fragment
// fn main() {
@@ -449,7 +453,7 @@
// let p3 = &(*p2)[0];
// foo(&*p);
// }
- Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
+
Func("foo",
Vector{
Param("p", ty.ptr<function, i32>()),
diff --git a/src/tint/lang/wgsl/resolver/expression_kind_test.cc b/src/tint/lang/wgsl/resolver/expression_kind_test.cc
index ff4d507..94c91c8e 100644
--- a/src/tint/lang/wgsl/resolver/expression_kind_test.cc
+++ b/src/tint/lang/wgsl/resolver/expression_kind_test.cc
@@ -309,7 +309,6 @@
GlobalVar("v", ty("texture_storage_2d", "rgba8unorm", expr), Group(0_u), Binding(0_u));
break;
case Use::kAddressSpace:
- Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
Func(Symbols().New(), Vector{Param("p", ty("ptr", expr, ty.f32()))}, ty.void_(),
tint::Empty);
break;
diff --git a/src/tint/lang/wgsl/resolver/function_validation_test.cc b/src/tint/lang/wgsl/resolver/function_validation_test.cc
index fd015f7..2a01da4 100644
--- a/src/tint/lang/wgsl/resolver/function_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/function_validation_test.cc
@@ -1047,7 +1047,7 @@
enum class Expectation {
kAlwaysPass,
- kPassWithFullPtrParameterExtension,
+ kPassWithUnrestrictedPointerParameters,
kAlwaysFail,
kInvalid,
};
@@ -1059,7 +1059,11 @@
struct TestWithParams : ResolverTestWithParam<TestParams> {};
using ResolverFunctionParameterValidationTest = TestWithParams;
-TEST_P(ResolverFunctionParameterValidationTest, AddressSpaceNoExtension) {
+TEST_P(ResolverFunctionParameterValidationTest, AddressSpaceWithoutUnrestrictedPointerParameters) {
+ auto features = wgsl::AllowedFeatures::Everything();
+ features.features.erase(wgsl::LanguageFeature::kUnrestrictedPointerParameters);
+ Resolver r(this, features);
+
auto& param = GetParam();
Structure("S", Vector{Member("a", ty.i32())});
auto ptr_type = ty("ptr", Ident(Source{{12, 34}}, param.address_space), ty("S"));
@@ -1071,29 +1075,27 @@
}
if (param.expectation == Expectation::kAlwaysPass) {
- ASSERT_TRUE(r()->Resolve()) << r()->error();
+ ASSERT_TRUE(r.Resolve()) << r.error();
} else {
StringStream ss;
ss << param.address_space;
- EXPECT_FALSE(r()->Resolve());
+ EXPECT_FALSE(r.Resolve());
if (param.expectation == Expectation::kInvalid) {
std::string err = R"(12:34 error: unresolved address space '${addr_space}'
12:34 note: Possible values: 'function', 'pixel_local', 'private', 'push_constant', 'storage', 'uniform', 'workgroup')";
err = tint::ReplaceAll(err, "${addr_space}", tint::ToString(param.address_space));
- EXPECT_EQ(r()->error(), err);
+ EXPECT_EQ(r.error(), err);
} else {
- EXPECT_EQ(r()->error(),
- "12:34 error: function parameter of pointer type cannot be in '" +
- tint::ToString(param.address_space) + "' address space");
+ EXPECT_EQ(r.error(), "12:34 error: function parameter of pointer type cannot be in '" +
+ tint::ToString(param.address_space) + "' address space");
}
}
}
-TEST_P(ResolverFunctionParameterValidationTest, AddressSpaceWithFullPtrParameterExtension) {
+TEST_P(ResolverFunctionParameterValidationTest, AddressSpaceWithUnrestrictedPointerParameters) {
auto& param = GetParam();
Structure("S", Vector{Member("a", ty.i32())});
auto ptr_type = ty("ptr", Ident(Source{{12, 34}}, param.address_space), ty("S"));
auto* arg = Param(Source{{12, 34}}, "p", ptr_type);
- Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
Func("f", Vector{arg}, ty.void_(), tint::Empty);
if (param.address_space == core::AddressSpace::kPixelLocal) {
@@ -1101,7 +1103,7 @@
}
if (param.expectation == Expectation::kAlwaysPass ||
- param.expectation == Expectation::kPassWithFullPtrParameterExtension) {
+ param.expectation == Expectation::kPassWithUnrestrictedPointerParameters) {
ASSERT_TRUE(r()->Resolve()) << r()->error();
} else {
EXPECT_FALSE(r()->Resolve());
@@ -1120,17 +1122,19 @@
INSTANTIATE_TEST_SUITE_P(
ResolverTest,
ResolverFunctionParameterValidationTest,
- testing::Values(
- TestParams{core::AddressSpace::kUndefined, Expectation::kInvalid},
- TestParams{core::AddressSpace::kIn, Expectation::kAlwaysFail},
- TestParams{core::AddressSpace::kOut, Expectation::kAlwaysFail},
- TestParams{core::AddressSpace::kUniform, Expectation::kPassWithFullPtrParameterExtension},
- TestParams{core::AddressSpace::kWorkgroup, Expectation::kPassWithFullPtrParameterExtension},
- TestParams{core::AddressSpace::kHandle, Expectation::kInvalid},
- TestParams{core::AddressSpace::kStorage, Expectation::kPassWithFullPtrParameterExtension},
- TestParams{core::AddressSpace::kPixelLocal, Expectation::kAlwaysFail},
- TestParams{core::AddressSpace::kPrivate, Expectation::kAlwaysPass},
- TestParams{core::AddressSpace::kFunction, Expectation::kAlwaysPass}));
+ testing::Values(TestParams{core::AddressSpace::kUndefined, Expectation::kInvalid},
+ TestParams{core::AddressSpace::kIn, Expectation::kAlwaysFail},
+ TestParams{core::AddressSpace::kOut, Expectation::kAlwaysFail},
+ TestParams{core::AddressSpace::kUniform,
+ Expectation::kPassWithUnrestrictedPointerParameters},
+ TestParams{core::AddressSpace::kWorkgroup,
+ Expectation::kPassWithUnrestrictedPointerParameters},
+ TestParams{core::AddressSpace::kHandle, Expectation::kInvalid},
+ TestParams{core::AddressSpace::kStorage,
+ Expectation::kPassWithUnrestrictedPointerParameters},
+ TestParams{core::AddressSpace::kPixelLocal, Expectation::kAlwaysFail},
+ TestParams{core::AddressSpace::kPrivate, Expectation::kAlwaysPass},
+ TestParams{core::AddressSpace::kFunction, Expectation::kAlwaysPass}));
} // namespace
} // namespace tint::resolver
diff --git a/src/tint/lang/wgsl/resolver/type_validation_test.cc b/src/tint/lang/wgsl/resolver/type_validation_test.cc
index e5fcf1c..0264afc 100644
--- a/src/tint/lang/wgsl/resolver/type_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/type_validation_test.cc
@@ -1217,7 +1217,7 @@
GlobalVar("a", st, Group(0_a), Binding(0_a));
- auto resolver = Resolver(this, {});
+ auto resolver = Resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: read-only storage textures require the "
@@ -1246,7 +1246,7 @@
GlobalVar("a", st, Group(0_a), Binding(0_a));
- auto resolver = Resolver(this, {});
+ Resolver resolver{this, wgsl::AllowedFeatures{}};
EXPECT_FALSE(resolver.Resolve());
EXPECT_EQ(resolver.error(),
"12:34 error: read-write storage textures require the "
diff --git a/src/tint/lang/wgsl/resolver/uniformity_test.cc b/src/tint/lang/wgsl/resolver/uniformity_test.cc
index cbab7db..4674237 100644
--- a/src/tint/lang/wgsl/resolver/uniformity_test.cc
+++ b/src/tint/lang/wgsl/resolver/uniformity_test.cc
@@ -3788,8 +3788,6 @@
TEST_F(UniformityAnalysisTest, LoadNonUniformGlobalThroughPointerParameter) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
fn bar(p : ptr<storage, i32, read_write>) {
@@ -3805,15 +3803,15 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:8:5 error: 'workgroupBarrier' must only be called from uniform control flow
+ R"(test:6:5 error: 'workgroupBarrier' must only be called from uniform control flow
workgroupBarrier();
^^^^^^^^^^^^^^^^
-test:7:3 note: control flow depends on possibly non-uniform value
+test:5:3 note: control flow depends on possibly non-uniform value
if (*p == 0) {
^^
-test:7:8 note: parameter 'p' of 'bar' may be non-uniform
+test:5:8 note: parameter 'p' of 'bar' may be non-uniform
if (*p == 0) {
^
)");
@@ -3821,8 +3819,6 @@
TEST_F(UniformityAnalysisTest, LoadNonUniformGlobalThroughPointerParameter_ViaReturnValue) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
fn bar(p : ptr<storage, i32, read_write>) -> i32 {
@@ -3838,15 +3834,15 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:12:5 error: 'workgroupBarrier' must only be called from uniform control flow
+ R"(test:10:5 error: 'workgroupBarrier' must only be called from uniform control flow
workgroupBarrier();
^^^^^^^^^^^^^^^^
-test:11:3 note: control flow depends on possibly non-uniform value
+test:9:3 note: control flow depends on possibly non-uniform value
if (0 == bar(&non_uniform)) {
^^
-test:11:12 note: return value of 'bar' may be non-uniform
+test:9:12 note: return value of 'bar' may be non-uniform
if (0 == bar(&non_uniform)) {
^^^^^^^^^^^^^^^^^
)");
@@ -4011,8 +4007,6 @@
TEST_F(UniformityAnalysisTest, LoadUniformThroughNonUniformPointer_ViaParameter) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
fn bar(p : ptr<function, array<i32, 4>>) {
@@ -4033,15 +4027,15 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:10:5 error: 'workgroupBarrier' must only be called from uniform control flow
+ R"(test:8:5 error: 'workgroupBarrier' must only be called from uniform control flow
workgroupBarrier();
^^^^^^^^^^^^^^^^
-test:9:3 note: control flow depends on possibly non-uniform value
+test:7:3 note: control flow depends on possibly non-uniform value
if (*local_p == 0) {
^^
-test:8:23 note: reading from read_write storage buffer 'non_uniform' may result in a non-uniform value
+test:6:23 note: reading from read_write storage buffer 'non_uniform' may result in a non-uniform value
let local_p = &(*p)[non_uniform];
^^^^^^^^^^^
)");
@@ -4049,8 +4043,6 @@
TEST_F(UniformityAnalysisTest, LoadUniformThroughNonUniformPointer_ViaParameterChain) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
fn zoo(p : ptr<function, i32>) {
@@ -4074,31 +4066,31 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:8:5 error: 'workgroupBarrier' must only be called from uniform control flow
+ R"(test:6:5 error: 'workgroupBarrier' must only be called from uniform control flow
workgroupBarrier();
^^^^^^^^^^^^^^^^
-test:7:3 note: control flow depends on possibly non-uniform value
+test:5:3 note: control flow depends on possibly non-uniform value
if (*p == 0) {
^^
-test:7:8 note: parameter 'p' of 'zoo' may be non-uniform
+test:5:8 note: parameter 'p' of 'zoo' may be non-uniform
if (*p == 0) {
^
-test:13:7 note: possibly non-uniform value passed via pointer here
+test:11:7 note: possibly non-uniform value passed via pointer here
zoo(p);
^
-test:12:8 note: reading from 'p' may result in a non-uniform value
+test:10:8 note: reading from 'p' may result in a non-uniform value
fn bar(p : ptr<function, i32>) {
^
-test:21:7 note: possibly non-uniform value passed via pointer here
+test:19:7 note: possibly non-uniform value passed via pointer here
bar(p);
^
-test:20:14 note: reading from read_write storage buffer 'non_uniform' may result in a non-uniform value
+test:18:14 note: reading from read_write storage buffer 'non_uniform' may result in a non-uniform value
let p = &v[non_uniform];
^^^^^^^^^^^
)");
@@ -4138,8 +4130,6 @@
TEST_F(UniformityAnalysisTest, LoadNonUniformThroughUniformPointer_ViaParameter) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
@group(0) @binding(1) var<storage, read> uniform_idx : i32;
@@ -4164,31 +4154,31 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:9:5 error: 'workgroupBarrier' must only be called from uniform control flow
+ R"(test:7:5 error: 'workgroupBarrier' must only be called from uniform control flow
workgroupBarrier();
^^^^^^^^^^^^^^^^
-test:8:3 note: control flow depends on possibly non-uniform value
+test:6:3 note: control flow depends on possibly non-uniform value
if (*p == 0) {
^^
-test:8:8 note: parameter 'p' of 'zoo' may be non-uniform
+test:6:8 note: parameter 'p' of 'zoo' may be non-uniform
if (*p == 0) {
^
-test:14:7 note: possibly non-uniform value passed via pointer here
+test:12:7 note: possibly non-uniform value passed via pointer here
zoo(p);
^
-test:13:8 note: reading from 'p' may result in a non-uniform value
+test:11:8 note: reading from 'p' may result in a non-uniform value
fn bar(p : ptr<function, i32>) {
^
-test:22:7 note: possibly non-uniform value passed via pointer here
+test:20:7 note: possibly non-uniform value passed via pointer here
bar(p);
^
-test:19:34 note: reading from read_write storage buffer 'non_uniform' may result in a non-uniform value
+test:17:34 note: reading from read_write storage buffer 'non_uniform' may result in a non-uniform value
var v = array<i32, 4>(0, 0, 0, non_uniform);
^^^^^^^^^^^
)");
@@ -5355,8 +5345,6 @@
TEST_F(UniformityAnalysisTest, AssignUniformToPrivatePointerParameter_StillNonUniform) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> non_uniform : i32;
fn bar(p : ptr<private, i32>) {
@@ -5373,15 +5361,15 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:9:5 error: 'workgroupBarrier' must only be called from uniform control flow
+ R"(test:7:5 error: 'workgroupBarrier' must only be called from uniform control flow
workgroupBarrier();
^^^^^^^^^^^^^^^^
-test:8:3 note: control flow depends on possibly non-uniform value
+test:6:3 note: control flow depends on possibly non-uniform value
if (*p == 0) {
^^
-test:8:8 note: parameter 'p' of 'bar' may be non-uniform
+test:6:8 note: parameter 'p' of 'bar' may be non-uniform
if (*p == 0) {
^
)");
@@ -5389,8 +5377,6 @@
TEST_F(UniformityAnalysisTest, AssignUniformToWorkgroupPointerParameter_StillNonUniform) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> non_uniform : i32;
fn bar(p : ptr<workgroup, i32>) {
@@ -5407,15 +5393,15 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:9:5 error: 'workgroupBarrier' must only be called from uniform control flow
+ R"(test:7:5 error: 'workgroupBarrier' must only be called from uniform control flow
workgroupBarrier();
^^^^^^^^^^^^^^^^
-test:8:3 note: control flow depends on possibly non-uniform value
+test:6:3 note: control flow depends on possibly non-uniform value
if (*p == 0) {
^^
-test:8:8 note: parameter 'p' of 'bar' may be non-uniform
+test:6:8 note: parameter 'p' of 'bar' may be non-uniform
if (*p == 0) {
^
)");
@@ -5423,8 +5409,6 @@
TEST_F(UniformityAnalysisTest, AssignUniformToStoragePointerParameter_StillNonUniform) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
fn bar(p : ptr<storage, i32, read_write>) {
@@ -5441,15 +5425,15 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:9:5 error: 'workgroupBarrier' must only be called from uniform control flow
+ R"(test:7:5 error: 'workgroupBarrier' must only be called from uniform control flow
workgroupBarrier();
^^^^^^^^^^^^^^^^
-test:8:3 note: control flow depends on possibly non-uniform value
+test:6:3 note: control flow depends on possibly non-uniform value
if (*p == 0) {
^^
-test:8:8 note: parameter 'p' of 'bar' may be non-uniform
+test:6:8 note: parameter 'p' of 'bar' may be non-uniform
if (*p == 0) {
^
)");
@@ -5457,8 +5441,6 @@
TEST_F(UniformityAnalysisTest, LoadFromReadOnlyStoragePointerParameter_AlwaysUniform) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read> non_uniform : i32;
fn bar(p : ptr<storage, i32, read>) {
@@ -7799,8 +7781,6 @@
TEST_F(UniformityAnalysisTest,
ArrayElement_AssignUniformToElementWithNonUniformIndex_ViaPartialPointerParameter) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
var<private> non_uniform : i32;
fn bar(p : ptr<function, i32>) {
@@ -7819,15 +7799,15 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:15:5 error: 'workgroupBarrier' must only be called from uniform control flow
+ R"(test:13:5 error: 'workgroupBarrier' must only be called from uniform control flow
workgroupBarrier();
^^^^^^^^^^^^^^^^
-test:14:3 note: control flow depends on possibly non-uniform value
+test:12:3 note: control flow depends on possibly non-uniform value
if (arr[0] == 0) {
^^
-test:12:17 note: reading from module-scope private variable 'non_uniform' may result in a non-uniform value
+test:10:17 note: reading from module-scope private variable 'non_uniform' may result in a non-uniform value
let p = &(arr[non_uniform]);
^^^^^^^^^^^
)");
@@ -8663,8 +8643,6 @@
TEST_F(UniformityAnalysisTest, ArrayLength_OnPtrArg) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> arr : array<f32>;
fn bar(p : ptr<storage, array<f32>, read_write>) {
@@ -8683,8 +8661,6 @@
TEST_F(UniformityAnalysisTest, ArrayLength_PtrArgRequiredToBeUniformForRetval_Pass) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> arr : array<f32>;
fn length(p : ptr<storage, array<f32>, read_write>) -> u32 {
@@ -8704,8 +8680,6 @@
// TODO(jrprice): This test requires variable pointers.
TEST_F(UniformityAnalysisTest, DISABLED_ArrayLength_PtrArgRequiredToBeUniformForRetval_Fail) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
@group(0) @binding(1) var<storage, read_write> arr1 : array<f32>;
@group(0) @binding(2) var<storage, read_write> arr2 : array<f32>;
@@ -8741,8 +8715,6 @@
TEST_F(UniformityAnalysisTest, ArrayLength_PtrArgRequiredToBeUniformForOtherPtrResult_Pass) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> arr : array<f32>;
fn length(p : ptr<storage, array<f32>, read_write>, out : ptr<function, u32>) {
@@ -8765,8 +8737,6 @@
TEST_F(UniformityAnalysisTest,
DISABLED_ArrayLength_PtrArgRequiredToBeUniformForOtherPtrResult_Fail) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
@group(0) @binding(1) var<storage, read_write> arr1 : array<f32>;
@group(0) @binding(2) var<storage, read_write> arr2 : array<f32>;
@@ -8805,8 +8775,6 @@
// Test that a single pointer argument can directly require uniformity as well as affecting the
// uniformity of the return value.
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> arr : array<u32>;
fn bar(p : ptr<storage, array<u32>, read_write>) -> u32 {
@@ -8831,15 +8799,15 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:21:5 error: 'workgroupBarrier' must only be called from uniform control flow
+ R"(test:19:5 error: 'workgroupBarrier' must only be called from uniform control flow
workgroupBarrier();
^^^^^^^^^^^^^^^^
-test:19:3 note: control flow depends on possibly non-uniform value
+test:17:3 note: control flow depends on possibly non-uniform value
if (0 == bar(p)) {
^^
-test:19:12 note: return value of 'bar' may be non-uniform
+test:17:12 note: return value of 'bar' may be non-uniform
if (0 == bar(p)) {
^^^^^^
)");
@@ -8864,8 +8832,6 @@
TEST_F(UniformityAnalysisTest, WorkgroupUniformLoad_ViaPtrArg) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
const wgsize = 4;
var<workgroup> data : array<u32, wgsize>;
@@ -8913,8 +8879,6 @@
TEST_F(UniformityAnalysisTest, WorkgroupUniformLoad_NonUniformPtr_ViaPtrArg) {
std::string src = R"(
-enable chromium_experimental_full_ptr_parameters;
-
const wgsize = 4;
var<workgroup> data : array<u32, wgsize>;
@@ -8933,19 +8897,19 @@
RunTest(src, false);
EXPECT_EQ(error_,
- R"(test:8:31 error: possibly non-uniform value passed here
+ R"(test:6:31 error: possibly non-uniform value passed here
return workgroupUniformLoad(p);
^
-test:8:31 note: parameter 'p' of 'foo' may be non-uniform
+test:6:31 note: parameter 'p' of 'foo' may be non-uniform
return workgroupUniformLoad(p);
^
-test:14:11 note: possibly non-uniform value passed here
+test:12:11 note: possibly non-uniform value passed here
if (foo(&data[idx]) > 0) {
^^^^^^^^^^
-test:14:17 note: builtin 'idx' of 'main' may be non-uniform
+test:12:17 note: builtin 'idx' of 'main' may be non-uniform
if (foo(&data[idx]) > 0) {
^^^
)");
diff --git a/src/tint/lang/wgsl/resolver/validator.cc b/src/tint/lang/wgsl/resolver/validator.cc
index 106d739..e6f7c31 100644
--- a/src/tint/lang/wgsl/resolver/validator.cc
+++ b/src/tint/lang/wgsl/resolver/validator.cc
@@ -845,8 +845,8 @@
case core::AddressSpace::kStorage:
case core::AddressSpace::kUniform:
case core::AddressSpace::kWorkgroup:
- ok = enabled_extensions_.Contains(
- wgsl::Extension::kChromiumExperimentalFullPtrParameters);
+ ok = allowed_features_.features.count(
+ wgsl::LanguageFeature::kUnrestrictedPointerParameters) != 0;
break;
default:
break;
@@ -1912,8 +1912,8 @@
}
if (param_type->Is<core::type::Pointer>() &&
- !enabled_extensions_.Contains(
- wgsl::Extension::kChromiumExperimentalFullPtrParameters)) {
+ !allowed_features_.features.count(
+ wgsl::LanguageFeature::kUnrestrictedPointerParameters)) {
// https://gpuweb.github.io/gpuweb/wgsl/#function-restriction
// Each argument of pointer type to a user-defined function must have the same memory
// view as its root identifier.
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
index 41cd202..e23de8a 100644
--- a/src/tint/lang/wgsl/wgsl.def
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -72,9 +72,6 @@
chromium_disable_uniformity_analysis
// A Chromium-specific extension for push constants
chromium_experimental_push_constant
- // A Chromium-specific extension that enables passing of uniform, storage and workgroup
- // address-spaced pointers as parameters, as well as pointers into sub-objects.
- chromium_experimental_full_ptr_parameters
// A Chromium-specific extension that adds basic subgroup functionality.
chromium_experimental_subgroups
// A Chromium-specific extension that relaxes memory layout requirements for uniform storage.
@@ -91,9 +88,10 @@
// https://gpuweb.github.io/gpuweb/wgsl/#language-extensions-sec
enum language_feature {
- readonly_and_readwrite_storage_textures
packed_4x8_integer_dot_product
pointer_composite_access
+ readonly_and_readwrite_storage_textures
+ unrestricted_pointer_parameters
// Language features used only for testing whose status will never change.
chromium_testing_unimplemented
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
index 47b6468..712fab3 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
+++ b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
@@ -267,9 +267,6 @@
attrs.Push(b.Invariant());
}
- if (ParamRequiresFullPtrParameters(param->Type())) {
- Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
- }
return b.Param(name, ty, std::move(attrs));
});
@@ -686,12 +683,6 @@
tint::Switch(
call, //
[&](const core::ir::UserCall* c) {
- for (auto* arg : call->Args()) {
- if (ArgRequiresFullPtrParameters(arg)) {
- Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
- break;
- }
- }
auto* expr = b.Call(NameFor(c->Target()), std::move(args));
if (call->Results().IsEmpty() || !call->Result(0)->IsUsed()) {
Append(b.CallStmt(expr));
@@ -1310,44 +1301,6 @@
return false;
}
}
-
- /// @returns true if a parameter of the type @p ty requires the
- /// kChromiumExperimentalFullPtrParameters extension to be enabled.
- bool ParamRequiresFullPtrParameters(const core::type::Type* ty) {
- if (auto* ptr = ty->As<core::type::Pointer>()) {
- switch (ptr->AddressSpace()) {
- case core::AddressSpace::kUniform:
- case core::AddressSpace::kStorage:
- case core::AddressSpace::kWorkgroup:
- return true;
- default:
- return false;
- }
- }
- return false;
- }
-
- /// @returns true if the argument @p arg requires the kChromiumExperimentalFullPtrParameters
- /// extension to be enabled.
- bool ArgRequiresFullPtrParameters(const core::ir::Value* arg) {
- if (!arg->Type()->Is<core::type::Pointer>()) {
- return false;
- }
-
- auto res = arg->As<core::ir::InstructionResult>();
- while (res) {
- auto* inst = res->Instruction();
- if (inst->Is<core::ir::Access>()) {
- return true; // Passing pointer into sub-object
- }
- if (auto* let = inst->As<core::ir::Let>()) {
- res = let->Value()->As<core::ir::InstructionResult>();
- } else {
- break;
- }
- }
- return false;
- }
};
} // namespace
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc
index cd77dba..b3119c7 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc
+++ b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc
@@ -3212,105 +3212,6 @@
}
////////////////////////////////////////////////////////////////////////////////
-// chromium_experimental_full_ptr_parameters
-////////////////////////////////////////////////////////////////////////////////
-TEST_F(IRToProgramTest, Enable_ChromiumExperimentalFullPtrParameters_StoragePtrParameter) {
- auto* fn = b.Function("f", ty.void_());
- fn->SetParams({b.FunctionParam("p", ty.ptr<storage, i32>())});
-
- b.Append(fn->Block(), [&] { b.Return(fn); });
-
- EXPECT_WGSL(R"(
-enable chromium_experimental_full_ptr_parameters;
-
-fn f(p : ptr<storage, i32, read_write>) {
-}
-)");
-}
-
-TEST_F(IRToProgramTest, Enable_ChromiumExperimentalFullPtrParameters_UniformPtrParameter) {
- auto* fn = b.Function("f", ty.void_());
- fn->SetParams({b.FunctionParam("p", ty.ptr<uniform, i32>())});
-
- b.Append(fn->Block(), [&] { b.Return(fn); });
-
- EXPECT_WGSL(R"(
-enable chromium_experimental_full_ptr_parameters;
-
-fn f(p : ptr<uniform, i32>) {
-}
-)");
-}
-
-TEST_F(IRToProgramTest, Enable_ChromiumExperimentalFullPtrParameters_WorkgroupPtrParameter) {
- auto* fn = b.Function("f", ty.void_());
- fn->SetParams({b.FunctionParam("p", ty.ptr<workgroup, i32>())});
-
- b.Append(fn->Block(), [&] { b.Return(fn); });
-
- EXPECT_WGSL(R"(
-enable chromium_experimental_full_ptr_parameters;
-
-fn f(p : ptr<workgroup, i32>) {
-}
-)");
-}
-
-TEST_F(IRToProgramTest, Enable_ChromiumExperimentalFullPtrParameters_SubObjectPtrArg) {
- auto* x = b.Function("x", ty.void_());
- x->SetParams({b.FunctionParam("p", ty.ptr<function, vec3<f32>>())});
- b.Append(x->Block(), [&] { b.Return(x); });
-
- auto* y = b.Function("y", ty.void_());
- b.Append(y->Block(), [&] {
- auto* m = b.Var<function, mat3x3<f32>>();
- auto* v = b.Access(ty.ptr<function, vec3<f32>>(), m, 1_i);
- b.Call(ty.void_(), x, v);
- b.Return(y);
- });
-
- EXPECT_WGSL(R"(
-enable chromium_experimental_full_ptr_parameters;
-
-fn x(p : ptr<function, vec3<f32>>) {
-}
-
-fn y() {
- var v : mat3x3<f32>;
- x(&(v[1i]));
-}
-)");
-}
-
-TEST_F(IRToProgramTest, Enable_ChromiumExperimentalFullPtrParameters_SubObjectPtrArg_ViaLet) {
- auto* x = b.Function("x", ty.void_());
- x->SetParams({b.FunctionParam("p", ty.ptr<function, vec3<f32>>())});
- b.Append(x->Block(), [&] { b.Return(x); });
-
- auto* y = b.Function("y", ty.void_());
- b.Append(y->Block(), [&] {
- auto* m = b.Var<function, mat3x3<f32>>();
- auto* v = b.Access(ty.ptr<function, vec3<f32>>(), m, 1_i);
- auto* l = b.Let("l", v);
- b.Call(ty.void_(), x, l);
- b.Return(y);
- });
-
- EXPECT_WGSL(R"(
-enable chromium_experimental_full_ptr_parameters;
-
-fn x(p : ptr<function, vec3<f32>>) {
-}
-
-fn y() {
- var v : mat3x3<f32>;
- let l = &(v[1i]);
- x(l);
-}
-)");
-}
-
-////////////////////////////////////////////////////////////////////////////////
// chromium_experimental_subgroups
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramTest, Enable_ChromiumExperimentalSubgroups_SubgroupBallot) {
diff --git a/test/tint/access/ptr.wgsl.expected.spvasm b/test/tint/access/ptr.wgsl.expected.spvasm
index c8f548f..0983663 100644
--- a/test/tint/access/ptr.wgsl.expected.spvasm
+++ b/test/tint/access/ptr.wgsl.expected.spvasm
@@ -17,18 +17,18 @@
OpName %v "v"
OpName %accept_value "accept_value"
OpName %val "val"
- OpName %accept_ptr_deref_call_func "accept_ptr_deref_call_func"
+ OpName %accept_ptr_deref_call_func_F "accept_ptr_deref_call_func_F"
OpName %val_0 "val"
- OpName %accept_ptr_deref_pass_through "accept_ptr_deref_pass_through"
+ OpName %accept_ptr_deref_pass_through_F "accept_ptr_deref_pass_through_F"
OpName %val_1 "val"
OpName %S "S"
OpMemberName %S 0 "a"
OpMemberName %S 1 "b"
- OpName %accept_ptr_to_struct_and_access "accept_ptr_to_struct_and_access"
+ OpName %accept_ptr_to_struct_and_access_F "accept_ptr_to_struct_and_access_F"
OpName %val_2 "val"
- OpName %accept_ptr_to_struct_access_pass_ptr "accept_ptr_to_struct_access_pass_ptr"
+ OpName %accept_ptr_to_struct_access_pass_ptr_F "accept_ptr_to_struct_access_pass_ptr_F"
OpName %val_3 "val"
- OpName %accept_ptr_vec_access_elements "accept_ptr_vec_access_elements"
+ OpName %accept_ptr_vec_access_elements_F "accept_ptr_vec_access_elements_F"
OpName %v1 "v1"
OpName %call_builtin_with_mod_scope_ptr "call_builtin_with_mod_scope_ptr"
OpName %main_inner "main_inner"
@@ -98,7 +98,7 @@
%28 = OpLabel
OpReturnValue %val
OpFunctionEnd
-%accept_ptr_deref_call_func = OpFunction %int None %29
+%accept_ptr_deref_call_func_F = OpFunction %int None %29
%val_0 = OpFunctionParameter %_ptr_Function_int
%33 = OpLabel
%35 = OpLoad %int %val_0
@@ -107,15 +107,15 @@
%39 = OpIAdd %int %35 %36
OpReturnValue %39
OpFunctionEnd
-%accept_ptr_deref_pass_through = OpFunction %int None %29
+%accept_ptr_deref_pass_through_F = OpFunction %int None %29
%val_1 = OpFunctionParameter %_ptr_Function_int
%42 = OpLabel
%44 = OpLoad %int %val_1
- %45 = OpFunctionCall %int %accept_ptr_deref_call_func %val_1
+ %45 = OpFunctionCall %int %accept_ptr_deref_call_func_F %val_1
%46 = OpIAdd %int %44 %45
OpReturnValue %46
OpFunctionEnd
-%accept_ptr_to_struct_and_access = OpFunction %int None %47
+%accept_ptr_to_struct_and_access_F = OpFunction %int None %47
%val_2 = OpFunctionParameter %_ptr_Function_S
%52 = OpLabel
%55 = OpAccessChain %_ptr_Function_int %val_2 %uint_0
@@ -125,7 +125,7 @@
%61 = OpIAdd %int %56 %60
OpReturnValue %61
OpFunctionEnd
-%accept_ptr_to_struct_access_pass_ptr = OpFunction %int None %47
+%accept_ptr_to_struct_access_pass_ptr_F = OpFunction %int None %47
%val_3 = OpFunctionParameter %_ptr_Function_S
%64 = OpLabel
%66 = OpAccessChain %_ptr_Function_int %val_3 %uint_0
@@ -134,7 +134,7 @@
%70 = OpLoad %int %69
OpReturnValue %70
OpFunctionEnd
-%accept_ptr_vec_access_elements = OpFunction %int None %71
+%accept_ptr_vec_access_elements_F = OpFunction %int None %71
%v1 = OpFunctionParameter %_ptr_Function_v3float
%76 = OpLabel
%79 = OpAccessChain %_ptr_Function_float %v1 %uint_0
@@ -165,11 +165,11 @@
OpStore %v2 %108
OpStore %v4 %110
%112 = OpAtomicLoad %int %g1 %uint_2 %uint_0
- %114 = OpFunctionCall %int %accept_ptr_deref_pass_through %v1_0
- %116 = OpFunctionCall %int %accept_ptr_to_struct_and_access %v2
- %118 = OpFunctionCall %int %accept_ptr_to_struct_and_access %v2
- %120 = OpFunctionCall %int %accept_ptr_vec_access_elements %v4
- %122 = OpFunctionCall %int %accept_ptr_to_struct_access_pass_ptr %v2
+ %114 = OpFunctionCall %int %accept_ptr_deref_pass_through_F %v1_0
+ %116 = OpFunctionCall %int %accept_ptr_to_struct_and_access_F %v2
+ %118 = OpFunctionCall %int %accept_ptr_to_struct_and_access_F %v2
+ %120 = OpFunctionCall %int %accept_ptr_vec_access_elements_F %v4
+ %122 = OpFunctionCall %int %accept_ptr_to_struct_access_pass_ptr_F %v2
%124 = OpFunctionCall %int %call_builtin_with_mod_scope_ptr
%126 = OpAccessChain %_ptr_StorageBuffer_int %s %uint_0
%127 = OpIAdd %int %114 %116
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.spvasm b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.spvasm
index 9a4e1f9..e4e6032 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.spvasm
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.spvasm
@@ -19,7 +19,7 @@
OpName %result "result"
OpName %S "S"
OpMemberName %S 0 "data"
- OpName %x "x"
+ OpName %x_F "x_F"
OpName %p "p"
OpName %f "f"
OpName %s "s"
@@ -60,7 +60,7 @@
%32 = OpConstantNull %S
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
%int_3 = OpConstant %int 3
- %x = OpFunction %void None %10
+ %x_F = OpFunction %void None %10
%p = OpFunctionParameter %_ptr_Function_S
%19 = OpLabel
%23 = OpAccessChain %_ptr_Uniform_int %ubo %uint_0 %uint_0
@@ -72,7 +72,7 @@
%f = OpFunction %void None %28
%30 = OpLabel
%s = OpVariable %_ptr_Function_S Function %32
- %33 = OpFunctionCall %void %x %s
+ %33 = OpFunctionCall %void %x_F %s
%36 = OpAccessChain %_ptr_StorageBuffer_int %result %uint_0 %uint_0
%38 = OpAccessChain %_ptr_Function_int %s %uint_0 %int_3
%39 = OpLoad %int %38
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.spvasm b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.spvasm
index d461346..2ade876 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.spvasm
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.spvasm
@@ -20,7 +20,7 @@
OpName %S "S"
OpMemberName %S 0 "data"
OpName %s "s"
- OpName %x "x"
+ OpName %x_F "x_F"
OpName %p "p"
OpName %f "f"
OpDecorate %ubo_block Block
@@ -61,7 +61,7 @@
%30 = OpTypeFunction %void
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
%int_3 = OpConstant %int 3
- %x = OpFunction %void None %17
+ %x_F = OpFunction %void None %17
%p = OpFunctionParameter %_ptr_Private_S
%21 = OpLabel
%25 = OpAccessChain %_ptr_Uniform_int %ubo %uint_0 %uint_0
@@ -72,7 +72,7 @@
OpFunctionEnd
%f = OpFunction %void None %30
%32 = OpLabel
- %33 = OpFunctionCall %void %x %s
+ %33 = OpFunctionCall %void %x_F %s
%36 = OpAccessChain %_ptr_StorageBuffer_int %result %uint_0 %uint_0
%38 = OpAccessChain %_ptr_Private_int %s %uint_0 %int_3
%39 = OpLoad %int %38
diff --git a/test/tint/bug/tint/1086.wgsl.expected.spvasm b/test/tint/bug/tint/1086.wgsl.expected.spvasm
index 2c300ad..9bba4e5 100644
--- a/test/tint/bug/tint/1086.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/1086.wgsl.expected.spvasm
@@ -8,7 +8,7 @@
OpEntryPoint Fragment %f "f"
OpExecutionMode %f OriginUpperLeft
OpName %v "v"
- OpName %x "x"
+ OpName %x_F "x_F"
OpName %p "p"
OpName %g "g"
OpName %f "f"
@@ -19,7 +19,7 @@
%void = OpTypeVoid
%5 = OpTypeFunction %void %_ptr_Private_float
%11 = OpTypeFunction %void
- %x = OpFunction %void None %5
+ %x_F = OpFunction %void None %5
%p = OpFunctionParameter %_ptr_Private_float
%9 = OpLabel
OpStore %p %4
@@ -27,7 +27,7 @@
OpFunctionEnd
%g = OpFunction %void None %11
%13 = OpLabel
- %14 = OpFunctionCall %void %x %v
+ %14 = OpFunctionCall %void %x_F %v
OpReturn
OpFunctionEnd
%f = OpFunction %void None %11
diff --git a/test/tint/bug/tint/2054.wgsl.expected.spvasm b/test/tint/bug/tint/2054.wgsl.expected.spvasm
index 2c6e927..d3100e7 100644
--- a/test/tint/bug/tint/2054.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/2054.wgsl.expected.spvasm
@@ -10,7 +10,7 @@
OpName %out_block "out_block"
OpMemberName %out_block 0 "inner"
OpName %out "out"
- OpName %bar "bar"
+ OpName %bar_F "bar_F"
OpName %p "p"
OpName %foo "foo"
OpName %param "param"
@@ -33,7 +33,7 @@
%uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
- %bar = OpFunction %void None %5
+ %bar_F = OpFunction %void None %5
%p = OpFunctionParameter %_ptr_Function_float
%10 = OpLabel
%14 = OpFOrdGreaterThanEqual %bool %float_1 %13
@@ -51,7 +51,7 @@
%foo = OpFunction %void None %22
%24 = OpLabel
%param = OpVariable %_ptr_Function_float Function %13
- %26 = OpFunctionCall %void %bar %param
+ %26 = OpFunctionCall %void %bar_F %param
%31 = OpAccessChain %_ptr_StorageBuffer_float %out %uint_0
%32 = OpLoad %float %param
OpStore %31 %32
diff --git a/test/tint/bug/tint/2121.wgsl.expected.spvasm b/test/tint/bug/tint/2121.wgsl.expected.spvasm
index f0651b9..817c5d7 100644
--- a/test/tint/bug/tint/2121.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/2121.wgsl.expected.spvasm
@@ -10,7 +10,7 @@
OpName %vertex_point_size "vertex_point_size"
OpName %VSOut "VSOut"
OpMemberName %VSOut 0 "pos"
- OpName %foo "foo"
+ OpName %foo_F "foo_F"
OpName %out "out"
OpName %pos "pos"
OpName %main_inner "main_inner"
@@ -42,7 +42,7 @@
%28 = OpTypeFunction %VSOut
%32 = OpConstantNull %VSOut
%36 = OpTypeFunction %void
- %foo = OpFunction %void None %9
+ %foo_F = OpFunction %void None %9
%out = OpFunctionParameter %_ptr_Function_VSOut
%15 = OpLabel
%pos = OpVariable %_ptr_Function_v4float Function %5
@@ -55,7 +55,7 @@
%main_inner = OpFunction %VSOut None %28
%30 = OpLabel
%out_0 = OpVariable %_ptr_Function_VSOut Function %32
- %33 = OpFunctionCall %void %foo %out_0
+ %33 = OpFunctionCall %void %foo_F %out_0
%35 = OpLoad %VSOut %out_0
OpReturnValue %35
OpFunctionEnd
diff --git a/test/tint/bug/tint/219.spvasm.expected.spvasm b/test/tint/bug/tint/219.spvasm.expected.spvasm
index 1725762..64431cb 100644
--- a/test/tint/bug/tint/219.spvasm.expected.spvasm
+++ b/test/tint/bug/tint/219.spvasm.expected.spvasm
@@ -7,7 +7,7 @@
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
- OpName %x_200 "x_200"
+ OpName %x_200_F "x_200_F"
OpName %x_201 "x_201"
OpName %main_1 "main_1"
OpName %x_11 "x_11"
@@ -22,7 +22,7 @@
%void = OpTypeVoid
%14 = OpTypeFunction %void
%19 = OpConstantNull %v2float
- %x_200 = OpFunction %float None %1
+ %x_200_F = OpFunction %float None %1
%x_201 = OpFunctionParameter %_ptr_Function_v2float
%7 = OpLabel
%12 = OpAccessChain %_ptr_Function_float %x_201 %uint_0
@@ -32,7 +32,7 @@
%main_1 = OpFunction %void None %14
%17 = OpLabel
%x_11 = OpVariable %_ptr_Function_v2float Function %19
- %20 = OpFunctionCall %float %x_200 %x_11
+ %20 = OpFunctionCall %float %x_200_F %x_11
OpReturn
OpFunctionEnd
%main = OpFunction %void None %14
diff --git a/test/tint/bug/tint/948.wgsl.expected.spvasm b/test/tint/bug/tint/948.wgsl.expected.spvasm
index 55c8b99..207c6fd 100644
--- a/test/tint/bug/tint/948.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/948.wgsl.expected.spvasm
@@ -45,7 +45,7 @@
OpName %stageUnits_1 "stageUnits_1"
OpName %vPosition "vPosition"
OpName %vUV "vUV"
- OpName %getFrameData_f1_ "getFrameData_f1_"
+ OpName %getFrameData_f1__F "getFrameData_f1__F"
OpName %frameID "frameID"
OpName %fX "fX"
OpName %main_1 "main_1"
@@ -203,7 +203,7 @@
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%main_out = OpTypeStruct %v4float
%347 = OpTypeFunction %main_out %v2float %v2float %v2float %v2float %v3float %v2float
-%getFrameData_f1_ = OpFunction %mat4v4float None %50
+%getFrameData_f1__F = OpFunction %mat4v4float None %50
%frameID = OpFunctionParameter %_ptr_Function_float
%54 = OpLabel
%fX = OpVariable %_ptr_Function_float Function %38
@@ -407,7 +407,7 @@
%238 = OpLoad %float %frameID_1
%239 = OpFAdd %float %238 %float_0_5
OpStore %param %239
- %240 = OpFunctionCall %mat4v4float %getFrameData_f1_ %param
+ %240 = OpFunctionCall %mat4v4float %getFrameData_f1__F %param
OpStore %frameData %240
%242 = OpAccessChain %_ptr_Function_v4float %frameData %116
%243 = OpLoad %v4float %242
diff --git a/test/tint/bug/tint/949.wgsl.expected.spvasm b/test/tint/bug/tint/949.wgsl.expected.spvasm
index fc44b4f..2f1a75b 100644
--- a/test/tint/bug/tint/949.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/949.wgsl.expected.spvasm
@@ -52,7 +52,7 @@
OpName %glFragColor "glFragColor"
OpName %bumpSamplerSampler "bumpSamplerSampler"
OpName %bumpSamplerTexture "bumpSamplerTexture"
- OpName %cotangent_frame_vf3_vf3_vf2_vf2_ "cotangent_frame_vf3_vf3_vf2_vf2_"
+ OpName %cotangent_frame_vf3_vf3_vf2_vf2__F_F_F_F "cotangent_frame_vf3_vf3_vf2_vf2__F_F_F_F"
OpName %normal_1 "normal_1"
OpName %p "p"
OpName %uv "uv"
@@ -66,17 +66,17 @@
OpName %tangent "tangent"
OpName %bitangent "bitangent"
OpName %invmax "invmax"
- OpName %transposeMat3_mf33_ "transposeMat3_mf33_"
+ OpName %transposeMat3_mf33__F "transposeMat3_mf33__F"
OpName %inMatrix "inMatrix"
OpName %i0 "i0"
OpName %i1 "i1"
OpName %i2 "i2"
OpName %outMatrix "outMatrix"
- OpName %perturbNormalBase_mf33_vf3_f1_ "perturbNormalBase_mf33_vf3_f1_"
+ OpName %perturbNormalBase_mf33_vf3_f1__F_F_F "perturbNormalBase_mf33_vf3_f1__F_F_F"
OpName %cotangentFrame "cotangentFrame"
OpName %normal "normal"
OpName %scale "scale"
- OpName %perturbNormal_mf33_vf3_f1_ "perturbNormal_mf33_vf3_f1_"
+ OpName %perturbNormal_mf33_vf3_f1__F_F_F "perturbNormal_mf33_vf3_f1__F_F_F"
OpName %cotangentFrame_1 "cotangentFrame_1"
OpName %textureSample "textureSample"
OpName %scale_1 "scale_1"
@@ -86,7 +86,7 @@
OpName %lightingInfo "lightingInfo"
OpMemberName %lightingInfo 0 "diffuse"
OpMemberName %lightingInfo 1 "specular"
- OpName %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ "computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_"
+ OpName %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1__F_F_F_F_F_F_F "computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1__F_F_F_F_F_F_F"
OpName %viewDirectionW "viewDirectionW"
OpName %vNormal "vNormal"
OpName %lightData "lightData"
@@ -310,7 +310,7 @@
%uint_3 = OpConstant %uint 3
%main_out = OpTypeStruct %v4float
%646 = OpTypeFunction %main_out %v2float %v4float %bool %v2float %v4float
-%cotangent_frame_vf3_vf3_vf2_vf2_ = OpFunction %mat3v3float None %54
+%cotangent_frame_vf3_vf3_vf2_vf2__F_F_F_F = OpFunction %mat3v3float None %54
%normal_1 = OpFunctionParameter %_ptr_Function_v3float
%p = OpFunctionParameter %_ptr_Function_v3float
%uv = OpFunctionParameter %_ptr_Function_v2float
@@ -406,7 +406,7 @@
%153 = OpCompositeConstruct %mat3v3float %144 %148 %152
OpReturnValue %153
OpFunctionEnd
-%transposeMat3_mf33_ = OpFunction %mat3v3float None %154
+%transposeMat3_mf33__F = OpFunction %mat3v3float None %154
%inMatrix = OpFunctionParameter %_ptr_Function_mat3v3float
%158 = OpLabel
%i0 = OpVariable %_ptr_Function_v3float Function %22
@@ -460,7 +460,7 @@
%212 = OpLoad %mat3v3float %outMatrix
OpReturnValue %212
OpFunctionEnd
-%perturbNormalBase_mf33_vf3_f1_ = OpFunction %v3float None %213
+%perturbNormalBase_mf33_vf3_f1__F_F_F = OpFunction %v3float None %213
%cotangentFrame = OpFunctionParameter %_ptr_Function_mat3v3float
%normal = OpFunctionParameter %_ptr_Function_v3float
%scale = OpFunctionParameter %_ptr_Function_float
@@ -471,7 +471,7 @@
%223 = OpExtInst %v3float %90 Normalize %224
OpReturnValue %223
OpFunctionEnd
-%perturbNormal_mf33_vf3_f1_ = OpFunction %v3float None %213
+%perturbNormal_mf33_vf3_f1__F_F_F = OpFunction %v3float None %213
%cotangentFrame_1 = OpFunctionParameter %_ptr_Function_mat3v3float
%textureSample = OpFunctionParameter %_ptr_Function_v3float
%scale_1 = OpFunctionParameter %_ptr_Function_float
@@ -487,10 +487,10 @@
OpStore %param_1 %241
%243 = OpLoad %float %scale_1
OpStore %param_2 %243
- %244 = OpFunctionCall %v3float %perturbNormalBase_mf33_vf3_f1_ %param %param_1 %param_2
+ %244 = OpFunctionCall %v3float %perturbNormalBase_mf33_vf3_f1__F_F_F %param %param_1 %param_2
OpReturnValue %244
OpFunctionEnd
-%computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ = OpFunction %lightingInfo None %248
+%computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1__F_F_F_F_F_F_F = OpFunction %lightingInfo None %248
%viewDirectionW = OpFunctionParameter %_ptr_Function_v3float
%vNormal = OpFunctionParameter %_ptr_Function_v3float
%lightData = OpFunctionParameter %_ptr_Function_v4float
@@ -669,11 +669,11 @@
%425 = OpAccessChain %_ptr_Uniform_v2float %x_269 %uint_0 %uint_8
%426 = OpLoad %v2float %425
OpStore %param_6 %426
- %427 = OpFunctionCall %mat3v3float %cotangent_frame_vf3_vf3_vf2_vf2_ %param_3 %param_4 %param_5 %param_6
+ %427 = OpFunctionCall %mat3v3float %cotangent_frame_vf3_vf3_vf2_vf2__F_F_F_F %param_3 %param_4 %param_5 %param_6
OpStore %TBN %427
%432 = OpLoad %mat3v3float %TBN
OpStore %param_7 %432
- %433 = OpFunctionCall %mat3v3float %transposeMat3_mf33_ %param_7
+ %433 = OpFunctionCall %mat3v3float %transposeMat3_mf33__F %param_7
OpStore %invTBN %433
%435 = OpLoad %mat3v3float %invTBN
%436 = OpLoad %v3float %output5
@@ -828,7 +828,7 @@
OpStore %param_9 %550
%551 = OpFDiv %float %float_1 %545
OpStore %param_10 %551
- %552 = OpFunctionCall %v3float %perturbNormal_mf33_vf3_f1_ %param_8 %param_9 %param_10
+ %552 = OpFunctionCall %v3float %perturbNormal_mf33_vf3_f1__F_F_F %param_8 %param_9 %param_10
%556 = OpLoad %v4float %output4
%557 = OpCompositeExtract %float %552 0
%558 = OpCompositeExtract %float %552 1
@@ -900,7 +900,7 @@
OpStore %param_16 %610
%611 = OpLoad %float %glossiness_1
OpStore %param_17 %611
- %612 = OpFunctionCall %lightingInfo %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ %param_11 %param_12 %param_13 %param_14 %param_15 %param_16 %param_17
+ %612 = OpFunctionCall %lightingInfo %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1__F_F_F_F_F_F_F %param_11 %param_12 %param_13 %param_14 %param_15 %param_16 %param_17
OpStore %info %612
OpStore %shadow %float_1
%620 = OpAccessChain %_ptr_Function_v3float %info %uint_0
diff --git a/test/tint/bug/tint/977.spvasm.expected.spvasm b/test/tint/bug/tint/977.spvasm.expected.spvasm
index 5d7f451..3c30bb1 100644
--- a/test/tint/bug/tint/977.spvasm.expected.spvasm
+++ b/test/tint/bug/tint/977.spvasm.expected.spvasm
@@ -26,7 +26,7 @@
OpMemberName %Uniforms 1 "sizeA"
OpMemberName %Uniforms 2 "sizeB"
OpName %x_46 "x_46"
- OpName %binaryOperation_f1_f1_ "binaryOperation_f1_f1_"
+ OpName %binaryOperation_f1_f1__F_F "binaryOperation_f1_f1__F_F"
OpName %a "a"
OpName %b "b"
OpName %tint_return_flag "tint_return_flag"
@@ -107,7 +107,7 @@
%float_n3 = OpConstant %float -3
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%104 = OpTypeFunction %void %v3uint
-%binaryOperation_f1_f1_ = OpFunction %float None %24
+%binaryOperation_f1_f1__F_F = OpFunction %float None %24
%a = OpFunctionParameter %_ptr_Function_float
%b = OpFunctionParameter %_ptr_Function_float
%29 = OpLabel
@@ -178,7 +178,7 @@
%96 = OpLoad %int %index
OpStore %param %float_n4
OpStore %param_1 %float_n3
- %99 = OpFunctionCall %float %binaryOperation_f1_f1_ %param %param_1
+ %99 = OpFunctionCall %float %binaryOperation_f1_f1__F_F %param %param_1
%103 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %96
OpStore %103 %99
OpReturn
diff --git a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl
index 59f5e8b..f435ed6 100644
--- a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl
+++ b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> v : array<i32, 4>;
fn foo(p : ptr<workgroup, i32>) -> i32 {
diff --git a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.wgsl b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.wgsl
index 59f5e8b..f435ed6 100644
--- a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.wgsl
+++ b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> v : array<i32, 4>;
fn foo(p : ptr<workgroup, i32>) -> i32 {
diff --git a/test/tint/extensions/parsing/multiple.wgsl b/test/tint/extensions/parsing/multiple.wgsl
index 3975c3d..1fb396f 100644
--- a/test/tint/extensions/parsing/multiple.wgsl
+++ b/test/tint/extensions/parsing/multiple.wgsl
@@ -1,5 +1,5 @@
// flags: --hlsl_shader_model 62
-enable chromium_experimental_full_ptr_parameters, f16;
+enable chromium_disable_uniformity_analysis, f16;
@fragment
fn main() -> @location(0) vec4<f32> {
diff --git a/test/tint/extensions/parsing/multiple.wgsl.expected.wgsl b/test/tint/extensions/parsing/multiple.wgsl.expected.wgsl
index 61f22c2..df77540 100644
--- a/test/tint/extensions/parsing/multiple.wgsl.expected.wgsl
+++ b/test/tint/extensions/parsing/multiple.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-enable chromium_experimental_full_ptr_parameters, f16;
+enable chromium_disable_uniformity_analysis, f16;
@fragment
fn main() -> @location(0) vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl b/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl
index 4053c2a..6e2cff6 100644
--- a/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
diff --git a/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl.expected.wgsl
index 8bd5276..4f77626 100644
--- a/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
diff --git a/test/tint/ptr_ref/load/param/function/i32.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/function/i32.wgsl.expected.spvasm
index d25f603..9a0d38f 100644
--- a/test/tint/ptr_ref/load/param/function/i32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/function/i32.wgsl.expected.spvasm
@@ -7,7 +7,7 @@
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %pointer "pointer"
OpName %main "main"
OpName %F "F"
@@ -17,7 +17,7 @@
%void = OpTypeVoid
%9 = OpTypeFunction %void
%14 = OpConstantNull %int
- %func = OpFunction %int None %1
+ %func_F = OpFunction %int None %1
%pointer = OpFunctionParameter %_ptr_Function_int
%6 = OpLabel
%8 = OpLoad %int %pointer
@@ -26,6 +26,6 @@
%main = OpFunction %void None %9
%12 = OpLabel
%F = OpVariable %_ptr_Function_int Function %14
- %15 = OpFunctionCall %int %func %F
+ %15 = OpFunctionCall %int %func_F %F
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/function/i32_in_struct.wgsl b/test/tint/ptr_ref/load/param/function/i32_in_struct.wgsl
index c3b7d55..6f40512 100644
--- a/test/tint/ptr_ref/load/param/function/i32_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/function/i32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/load/param/function/i32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/function/i32_in_struct.wgsl.expected.wgsl
index e5ecd70..04a0bb4 100644
--- a/test/tint/ptr_ref/load/param/function/i32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/function/i32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/load/param/function/struct_in_array.wgsl b/test/tint/ptr_ref/load/param/function/struct_in_array.wgsl
index 103a3dd..7c87787 100644
--- a/test/tint/ptr_ref/load/param/function/struct_in_array.wgsl
+++ b/test/tint/ptr_ref/load/param/function/struct_in_array.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/load/param/function/struct_in_array.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/function/struct_in_array.wgsl.expected.wgsl
index 2d4edb3..74594bf 100644
--- a/test/tint/ptr_ref/load/param/function/struct_in_array.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/function/struct_in_array.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl b/test/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl
index afe82bc..c91b9da 100644
--- a/test/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl
+++ b/test/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<function, vec2<f32>>) -> vec2<f32> {
return *pointer;
}
diff --git a/test/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl.expected.wgsl
index 2c61e24..1aff761 100644
--- a/test/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<function, vec2<f32>>) -> vec2<f32> {
return *(pointer);
}
diff --git a/test/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.spvasm
index 51c798e..c7d7be4 100644
--- a/test/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.spvasm
@@ -7,7 +7,7 @@
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %pointer "pointer"
OpName %main "main"
OpName %F "F"
@@ -18,7 +18,7 @@
%void = OpTypeVoid
%10 = OpTypeFunction %void
%15 = OpConstantNull %v4float
- %func = OpFunction %v4float None %1
+ %func_F = OpFunction %v4float None %1
%pointer = OpFunctionParameter %_ptr_Function_v4float
%7 = OpLabel
%9 = OpLoad %v4float %pointer
@@ -27,6 +27,6 @@
%main = OpFunction %void None %10
%13 = OpLabel
%F = OpVariable %_ptr_Function_v4float Function %15
- %16 = OpFunctionCall %v4float %func %F
+ %16 = OpFunctionCall %v4float %func_F %F
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl b/test/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl
index 8b95569..b65f9ba 100644
--- a/test/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl
+++ b/test/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<function, vec4<f32>>) -> vec4<f32> {
return *pointer;
}
diff --git a/test/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl.expected.wgsl
index e5a91d7..9e74cd5 100644
--- a/test/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<function, vec4<f32>>) -> vec4<f32> {
return *(pointer);
}
diff --git a/test/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl b/test/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl
index f1167ac..69682cf 100644
--- a/test/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
};
diff --git a/test/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl.expected.wgsl
index f35fc26..1f3a783 100644
--- a/test/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
}
diff --git a/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl b/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl
index 867e62b..8ce3524 100644
--- a/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
diff --git a/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.wgsl
index 1db57bb..deda9b4 100644
--- a/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
diff --git a/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.spvasm
index 66b4e2f..f328a08 100644
--- a/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.spvasm
@@ -8,7 +8,7 @@
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpName %P "P"
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %pointer "pointer"
OpName %main "main"
%int = OpTypeInt 32 1
@@ -18,7 +18,7 @@
%5 = OpTypeFunction %int %_ptr_Private_int
%void = OpTypeVoid
%11 = OpTypeFunction %void
- %func = OpFunction %int None %5
+ %func_F = OpFunction %int None %5
%pointer = OpFunctionParameter %_ptr_Private_int
%8 = OpLabel
%10 = OpLoad %int %pointer
@@ -26,6 +26,6 @@
OpFunctionEnd
%main = OpFunction %void None %11
%14 = OpLabel
- %15 = OpFunctionCall %int %func %P
+ %15 = OpFunctionCall %int %func_F %P
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl b/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl
index 3db15dc..f48aab5 100644
--- a/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.wgsl
index bda048a..5be3925 100644
--- a/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl b/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl
index b7b8f90..193c2dc 100644
--- a/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl
+++ b/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.wgsl
index 839270e..847d132 100644
--- a/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl b/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl
index 7dc8a0b..92578b9 100644
--- a/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl
+++ b/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<private, vec2<f32>>) -> vec2<f32> {
return *pointer;
}
diff --git a/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.wgsl
index dbc825a..728776c 100644
--- a/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<private, vec2<f32>>) -> vec2<f32> {
return *(pointer);
}
diff --git a/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.spvasm
index dfe4930..2c19ccf 100644
--- a/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.spvasm
@@ -8,7 +8,7 @@
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpName %P "P"
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %pointer "pointer"
OpName %main "main"
%float = OpTypeFloat 32
@@ -19,7 +19,7 @@
%6 = OpTypeFunction %v4float %_ptr_Private_v4float
%void = OpTypeVoid
%12 = OpTypeFunction %void
- %func = OpFunction %v4float None %6
+ %func_F = OpFunction %v4float None %6
%pointer = OpFunctionParameter %_ptr_Private_v4float
%9 = OpLabel
%11 = OpLoad %v4float %pointer
@@ -27,6 +27,6 @@
OpFunctionEnd
%main = OpFunction %void None %12
%15 = OpLabel
- %16 = OpFunctionCall %v4float %func %P
+ %16 = OpFunctionCall %v4float %func_F %P
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl b/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl
index 07dfea9..fc8a503 100644
--- a/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<private, vec4<f32>>) -> vec4<f32> {
return *pointer;
}
diff --git a/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.wgsl
index c0cf801..2d03c8e 100644
--- a/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<private, vec4<f32>>) -> vec4<f32> {
return *(pointer);
}
diff --git a/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl b/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl
index 90f325e..d38884c 100644
--- a/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
};
diff --git a/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.wgsl
index 2c488a9..0365630 100644
--- a/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
}
diff --git a/test/tint/ptr_ref/load/param/ptr.spvasm.expected.spvasm b/test/tint/ptr_ref/load/param/ptr.spvasm.expected.spvasm
index 47d6500..d0e55b1 100644
--- a/test/tint/ptr_ref/load/param/ptr.spvasm.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/ptr.spvasm.expected.spvasm
@@ -7,7 +7,7 @@
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %value "value"
OpName %pointer "pointer"
OpName %main_1 "main_1"
@@ -20,7 +20,7 @@
%11 = OpTypeFunction %void
%15 = OpConstantNull %int
%int_123 = OpConstant %int 123
- %func = OpFunction %int None %1
+ %func_F = OpFunction %int None %1
%value = OpFunctionParameter %int
%pointer = OpFunctionParameter %_ptr_Function_int
%7 = OpLabel
@@ -34,7 +34,7 @@
OpStore %i %15
OpStore %i %int_123
%18 = OpLoad %int %i
- %19 = OpFunctionCall %int %func %18 %i
+ %19 = OpFunctionCall %int %func_F %18 %i
OpReturn
OpFunctionEnd
%main = OpFunction %void None %11
diff --git a/test/tint/ptr_ref/load/param/ptr.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/ptr.wgsl.expected.spvasm
index bf904d1..7d61a31 100644
--- a/test/tint/ptr_ref/load/param/ptr.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/ptr.wgsl.expected.spvasm
@@ -7,7 +7,7 @@
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %value "value"
OpName %pointer "pointer"
OpName %main "main"
@@ -19,7 +19,7 @@
%11 = OpTypeFunction %void
%int_123 = OpConstant %int 123
%17 = OpConstantNull %int
- %func = OpFunction %int None %1
+ %func_F = OpFunction %int None %1
%value = OpFunctionParameter %int
%pointer = OpFunctionParameter %_ptr_Function_int
%7 = OpLabel
@@ -32,6 +32,6 @@
%i = OpVariable %_ptr_Function_int Function %17
OpStore %i %int_123
%19 = OpLoad %int %i
- %18 = OpFunctionCall %int %func %19 %i
+ %18 = OpFunctionCall %int %func_F %19 %i
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl b/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl
index eed9668..a393587 100644
--- a/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
diff --git a/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.wgsl
index 033d9b1..80789dd 100644
--- a/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
diff --git a/test/tint/ptr_ref/load/param/storage/i32.wgsl b/test/tint/ptr_ref/load/param/storage/i32.wgsl
index ac2a585..341081e 100644
--- a/test/tint/ptr_ref/load/param/storage/i32.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/i32.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : i32;
fn func(pointer : ptr<storage, i32>) -> i32 {
diff --git a/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.wgsl
index b9a422c..955c304 100644
--- a/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : i32;
fn func(pointer : ptr<storage, i32>) -> i32 {
diff --git a/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl b/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl
index 05631d2..8edbb8f 100644
--- a/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.wgsl
index 21763e0..7cb41e5 100644
--- a/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl b/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl
index 5616c9a..c97e3ab 100644
--- a/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.wgsl
index e16f195..c188052 100644
--- a/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl b/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl
index 180f5ce..9ce0fa9 100644
--- a/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : mat2x2<f32>;
fn func(pointer : ptr<storage, vec2<f32>>) -> vec2<f32> {
diff --git a/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.wgsl
index 889c31b..06c8846 100644
--- a/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : mat2x2<f32>;
fn func(pointer : ptr<storage, vec2<f32>>) -> vec2<f32> {
diff --git a/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl b/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl
index 2a08b41..d13e602 100644
--- a/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : vec4<f32>;
fn func(pointer : ptr<storage, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.wgsl
index a1bcaca..3d74aba 100644
--- a/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : vec4<f32>;
fn func(pointer : ptr<storage, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl
index 35ef536..e992bb3 100644
--- a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : mat2x4<f32>;
fn func(pointer : ptr<storage, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.wgsl
index a11814a..174f22c 100644
--- a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage> S : mat2x4<f32>;
fn func(pointer : ptr<storage, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl
index 5fe26b3..97a8937 100644
--- a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
};
diff --git a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.wgsl
index bb2f4cc..08a4e31 100644
--- a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
}
diff --git a/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl b/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl
index cccfea0..aebb3dd 100644
--- a/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<vec4<i32>, 4>,
};
diff --git a/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.wgsl
index c2b203e..580d261 100644
--- a/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<vec4<i32>, 4>,
}
diff --git a/test/tint/ptr_ref/load/param/uniform/i32.wgsl b/test/tint/ptr_ref/load/param/uniform/i32.wgsl
index 8e37001..0b9a0b7 100644
--- a/test/tint/ptr_ref/load/param/uniform/i32.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/i32.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> S : i32;
fn func(pointer : ptr<uniform, i32>) -> i32 {
diff --git a/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.wgsl
index b8a873f..24a9e89 100644
--- a/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> S : i32;
fn func(pointer : ptr<uniform, i32>) -> i32 {
diff --git a/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl b/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl
index 6db13e0..c3573ab 100644
--- a/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.wgsl
index c44d00b..56fc937 100644
--- a/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl b/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl
index f0c98a4..f602cfb 100644
--- a/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<i32>,
};
diff --git a/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.wgsl
index be885de..04c15cc 100644
--- a/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<i32>,
}
diff --git a/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl b/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl
index e84f1a1..0874bb8 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> S : mat2x2<f32>;
fn func(pointer : ptr<uniform, vec2<f32>>) -> vec2<f32> {
diff --git a/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.wgsl
index 1891f2a..041bd12 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> S : mat2x2<f32>;
fn func(pointer : ptr<uniform, vec2<f32>>) -> vec2<f32> {
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl b/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl
index 68e7949..cf0470c 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> S : vec4<f32>;
fn func(pointer : ptr<uniform, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.wgsl
index c5e8e6a..24a9408 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> S : vec4<f32>;
fn func(pointer : ptr<uniform, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl
index a77ca7c..72eb8a4 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> S : mat2x4<f32>;
fn func(pointer : ptr<uniform, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.wgsl
index 7f010b8..8b69502 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<uniform> S : mat2x4<f32>;
fn func(pointer : ptr<uniform, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl
index 7059df4..8c923fa 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
};
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.wgsl
index f08290a..8064b35 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
}
diff --git a/test/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl b/test/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl
index 55a558a..7e1c3a5 100644
--- a/test/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
diff --git a/test/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl.expected.wgsl
index 1368900c..ebd976a 100644
--- a/test/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
diff --git a/test/tint/ptr_ref/load/param/workgroup/i32.wgsl b/test/tint/ptr_ref/load/param/workgroup/i32.wgsl
index f0b1be9..eb250f8 100644
--- a/test/tint/ptr_ref/load/param/workgroup/i32.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/i32.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : i32;
fn func(pointer : ptr<workgroup, i32>) -> i32 {
diff --git a/test/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.wgsl
index 8c26859d..65469f1 100644
--- a/test/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : i32;
fn func(pointer : ptr<workgroup, i32>) -> i32 {
diff --git a/test/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl b/test/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl
index b777a56..e90c5377 100644
--- a/test/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl.expected.wgsl
index d335ec2..b168087 100644
--- a/test/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl b/test/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl
index 638ca03..d6f7bed 100644
--- a/test/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl.expected.wgsl
index 2a586fb..81bc4ae 100644
--- a/test/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl b/test/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl
index 5d8e9ae..6bb49f9 100644
--- a/test/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : mat2x2<f32>;
fn func(pointer : ptr<workgroup, vec2<f32>>) -> vec2<f32> {
diff --git a/test/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.wgsl
index 55afec1..687ac5d 100644
--- a/test/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : mat2x2<f32>;
fn func(pointer : ptr<workgroup, vec2<f32>>) -> vec2<f32> {
diff --git a/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl b/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl
index 0ccdce7..47157e8 100644
--- a/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : vec4<f32>;
fn func(pointer : ptr<workgroup, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.wgsl
index 3c9ab35..fe5be6b 100644
--- a/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : vec4<f32>;
fn func(pointer : ptr<workgroup, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl
index 204d6c2..87524e9 100644
--- a/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : mat2x4<f32>;
fn func(pointer : ptr<workgroup, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.wgsl
index 5f0f9ae..69a1459 100644
--- a/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : mat2x4<f32>;
fn func(pointer : ptr<workgroup, vec4<f32>>) -> vec4<f32> {
diff --git a/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl
index 5251b66..95e977e 100644
--- a/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
};
diff --git a/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl.expected.wgsl
index 0d3e1d4..3b19185 100644
--- a/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
}
diff --git a/test/tint/ptr_ref/store/param/function/array_in_struct.wgsl b/test/tint/ptr_ref/store/param/function/array_in_struct.wgsl
index c39eca4..d3f5cdc 100644
--- a/test/tint/ptr_ref/store/param/function/array_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/function/array_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
diff --git a/test/tint/ptr_ref/store/param/function/array_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/function/array_in_struct.wgsl.expected.wgsl
index f45fcae..9e26365 100644
--- a/test/tint/ptr_ref/store/param/function/array_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/function/array_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
diff --git a/test/tint/ptr_ref/store/param/function/i32.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/function/i32.wgsl.expected.spvasm
index ed7174b..7fbb39f 100644
--- a/test/tint/ptr_ref/store/param/function/i32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/function/i32.wgsl.expected.spvasm
@@ -7,7 +7,7 @@
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %pointer "pointer"
OpName %main "main"
OpName %F "F"
@@ -18,7 +18,7 @@
%int_42 = OpConstant %int 42
%10 = OpTypeFunction %void
%14 = OpConstantNull %int
- %func = OpFunction %void None %1
+ %func_F = OpFunction %void None %1
%pointer = OpFunctionParameter %_ptr_Function_int
%7 = OpLabel
OpStore %pointer %int_42
@@ -27,6 +27,6 @@
%main = OpFunction %void None %10
%12 = OpLabel
%F = OpVariable %_ptr_Function_int Function %14
- %15 = OpFunctionCall %void %func %F
+ %15 = OpFunctionCall %void %func_F %F
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/function/i32_in_struct.wgsl b/test/tint/ptr_ref/store/param/function/i32_in_struct.wgsl
index 971651c..105ca7a 100644
--- a/test/tint/ptr_ref/store/param/function/i32_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/function/i32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/store/param/function/i32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/function/i32_in_struct.wgsl.expected.wgsl
index 3db8678..115b428 100644
--- a/test/tint/ptr_ref/store/param/function/i32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/function/i32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/store/param/function/struct_in_array.wgsl b/test/tint/ptr_ref/store/param/function/struct_in_array.wgsl
index 631b70a..0875a4d 100644
--- a/test/tint/ptr_ref/store/param/function/struct_in_array.wgsl
+++ b/test/tint/ptr_ref/store/param/function/struct_in_array.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/store/param/function/struct_in_array.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/function/struct_in_array.wgsl.expected.wgsl
index fe15aa5..18c064b 100644
--- a/test/tint/ptr_ref/store/param/function/struct_in_array.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/function/struct_in_array.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl b/test/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl
index 3108042..2d7804c 100644
--- a/test/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl
+++ b/test/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<function, vec2<f32>>) {
*pointer = vec2<f32>();
}
diff --git a/test/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl.expected.wgsl
index a8dca7e..8ba47d9 100644
--- a/test/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<function, vec2<f32>>) {
*(pointer) = vec2<f32>();
}
diff --git a/test/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.spvasm
index c6e3a08..ced6948 100644
--- a/test/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.spvasm
@@ -7,7 +7,7 @@
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %pointer "pointer"
OpName %main "main"
OpName %F "F"
@@ -18,7 +18,7 @@
%1 = OpTypeFunction %void %_ptr_Function_v4float
%10 = OpConstantNull %v4float
%11 = OpTypeFunction %void
- %func = OpFunction %void None %1
+ %func_F = OpFunction %void None %1
%pointer = OpFunctionParameter %_ptr_Function_v4float
%8 = OpLabel
OpStore %pointer %10
@@ -27,6 +27,6 @@
%main = OpFunction %void None %11
%13 = OpLabel
%F = OpVariable %_ptr_Function_v4float Function %10
- %15 = OpFunctionCall %void %func %F
+ %15 = OpFunctionCall %void %func_F %F
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl b/test/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl
index b71ee41..18f3995 100644
--- a/test/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl
+++ b/test/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<function, vec4<f32>>) {
*pointer = vec4<f32>();
}
diff --git a/test/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl.expected.wgsl
index 590aa4f..0b096ba 100644
--- a/test/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<function, vec4<f32>>) {
*(pointer) = vec4<f32>();
}
diff --git a/test/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl b/test/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl
index 9351165..8f1d2c5 100644
--- a/test/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
};
diff --git a/test/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl.expected.wgsl
index cf878a0..cc030aa 100644
--- a/test/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
}
diff --git a/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl b/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl
index 0d7c2d8..ba11ef2 100644
--- a/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
diff --git a/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.wgsl
index 99958c7..94ca0b1 100644
--- a/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
diff --git a/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.spvasm
index 867f836..c309afd 100644
--- a/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.spvasm
@@ -8,7 +8,7 @@
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpName %P "P"
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %pointer "pointer"
OpName %main "main"
%int = OpTypeInt 32 1
@@ -19,7 +19,7 @@
%5 = OpTypeFunction %void %_ptr_Private_int
%int_42 = OpConstant %int 42
%12 = OpTypeFunction %void
- %func = OpFunction %void None %5
+ %func_F = OpFunction %void None %5
%pointer = OpFunctionParameter %_ptr_Private_int
%9 = OpLabel
OpStore %pointer %int_42
@@ -27,6 +27,6 @@
OpFunctionEnd
%main = OpFunction %void None %12
%14 = OpLabel
- %15 = OpFunctionCall %void %func %P
+ %15 = OpFunctionCall %void %func_F %P
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl b/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl
index 2238584..fd3ee42 100644
--- a/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.wgsl
index 7052c23..ddb6113 100644
--- a/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl b/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl
index 2a9d4cd..59bcdcf 100644
--- a/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl
+++ b/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.wgsl
index 3c97892..6ce0314 100644
--- a/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl b/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl
index 012a14d..e3d9154 100644
--- a/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl
+++ b/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<private, vec2<f32>>) {
*pointer = vec2<f32>();
}
diff --git a/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.wgsl
index fe087a1..215e71b 100644
--- a/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<private, vec2<f32>>) {
*(pointer) = vec2<f32>();
}
diff --git a/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.spvasm
index 334b687..36a2818 100644
--- a/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.spvasm
@@ -8,7 +8,7 @@
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpName %P "P"
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %pointer "pointer"
OpName %main "main"
%float = OpTypeFloat 32
@@ -19,7 +19,7 @@
%void = OpTypeVoid
%6 = OpTypeFunction %void %_ptr_Private_v4float
%12 = OpTypeFunction %void
- %func = OpFunction %void None %6
+ %func_F = OpFunction %void None %6
%pointer = OpFunctionParameter %_ptr_Private_v4float
%10 = OpLabel
OpStore %pointer %5
@@ -27,6 +27,6 @@
OpFunctionEnd
%main = OpFunction %void None %12
%14 = OpLabel
- %15 = OpFunctionCall %void %func %P
+ %15 = OpFunctionCall %void %func_F %P
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl b/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl
index 14e4bfa..85dc073 100644
--- a/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<private, vec4<f32>>) {
*pointer = vec4<f32>();
}
diff --git a/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.wgsl
index 3ba72c6..1a1175e 100644
--- a/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
fn func(pointer : ptr<private, vec4<f32>>) {
*(pointer) = vec4<f32>();
}
diff --git a/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl b/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl
index bdc5cbc..26d4a73 100644
--- a/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
};
diff --git a/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.wgsl
index d4c15e1..048d888 100644
--- a/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
}
diff --git a/test/tint/ptr_ref/store/param/ptr.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/ptr.wgsl.expected.spvasm
index e750538..1485f53 100644
--- a/test/tint/ptr_ref/store/param/ptr.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/ptr.wgsl.expected.spvasm
@@ -7,7 +7,7 @@
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
- OpName %func "func"
+ OpName %func_F "func_F"
OpName %value "value"
OpName %pointer "pointer"
OpName %main "main"
@@ -19,7 +19,7 @@
%10 = OpTypeFunction %void
%int_123 = OpConstant %int 123
%15 = OpConstantNull %int
- %func = OpFunction %void None %1
+ %func_F = OpFunction %void None %1
%value = OpFunctionParameter %int
%pointer = OpFunctionParameter %_ptr_Function_int
%8 = OpLabel
@@ -30,6 +30,6 @@
%12 = OpLabel
%i = OpVariable %_ptr_Function_int Function %15
OpStore %i %int_123
- %16 = OpFunctionCall %void %func %int_123 %i
+ %16 = OpFunctionCall %void %func_F %int_123 %i
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl b/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl
index e0e40eb..ea44a34 100644
--- a/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
diff --git a/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.wgsl
index 5545a0d..d962795 100644
--- a/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
diff --git a/test/tint/ptr_ref/store/param/storage/i32.wgsl b/test/tint/ptr_ref/store/param/storage/i32.wgsl
index 8f1c6e9..cfab20c 100644
--- a/test/tint/ptr_ref/store/param/storage/i32.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/i32.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : i32;
fn func(pointer : ptr<storage, i32, read_write>) {
diff --git a/test/tint/ptr_ref/store/param/storage/i32.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/storage/i32.wgsl.expected.wgsl
index 6ed869b..531ab7b 100644
--- a/test/tint/ptr_ref/store/param/storage/i32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/i32.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : i32;
fn func(pointer : ptr<storage, i32, read_write>) {
diff --git a/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl b/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl
index f68d27c..99f5006 100644
--- a/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.wgsl
index 6a35569..49ce8b8 100644
--- a/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl b/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl
index f13db83..196e3c8 100644
--- a/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.wgsl
index 90db206..2feaf3c 100644
--- a/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl b/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl
index d69899b..8a67978 100644
--- a/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : mat2x2<f32>;
fn func(pointer : ptr<storage, vec2<f32>, read_write>) {
diff --git a/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.wgsl
index d31440c..f26fb14 100644
--- a/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : mat2x2<f32>;
fn func(pointer : ptr<storage, vec2<f32>, read_write>) {
diff --git a/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl b/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl
index b76e544..16d8e24 100644
--- a/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : vec4<f32>;
fn func(pointer : ptr<storage, vec4<f32>, read_write>) {
diff --git a/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.wgsl
index 3a10bfb..3e2c8cc 100644
--- a/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : vec4<f32>;
fn func(pointer : ptr<storage, vec4<f32>, read_write>) {
diff --git a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl
index 82b69e9..1c6afed 100644
--- a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : mat2x4<f32>;
fn func(pointer : ptr<storage, vec4<f32>, read_write>) {
diff --git a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.wgsl
index 822fba4..7dc050f 100644
--- a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
@group(0) @binding(0) var<storage, read_write> S : mat2x4<f32>;
fn func(pointer : ptr<storage, vec4<f32>, read_write>) {
diff --git a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl
index c49e789..58c5cd7 100644
--- a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
};
diff --git a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.wgsl
index 89c0bc3..f3576e7 100644
--- a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
}
diff --git a/test/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl b/test/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl
index 4bf2e36..fab218b 100644
--- a/test/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
};
diff --git a/test/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl.expected.wgsl
index b6f7aeb..263bc27 100644
--- a/test/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
arr : array<i32, 4>,
}
diff --git a/test/tint/ptr_ref/store/param/workgroup/i32.wgsl b/test/tint/ptr_ref/store/param/workgroup/i32.wgsl
index 9d7d66a..cd54b96 100644
--- a/test/tint/ptr_ref/store/param/workgroup/i32.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/i32.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : i32;
fn func(pointer : ptr<workgroup, i32>) {
diff --git a/test/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.wgsl
index 3bb4d84..6605ae6 100644
--- a/test/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : i32;
fn func(pointer : ptr<workgroup, i32>) {
diff --git a/test/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl b/test/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl
index 3c3209f..edd594a 100644
--- a/test/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl.expected.wgsl
index 642e2a5..bec39be 100644
--- a/test/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl b/test/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl
index 5fbef20..1709254 100644
--- a/test/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
};
diff --git a/test/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl.expected.wgsl
index 8177527..ebb6b29 100644
--- a/test/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : i32,
}
diff --git a/test/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl b/test/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl
index 2c25bbf..afc6510 100644
--- a/test/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : mat2x2<f32>;
fn func(pointer : ptr<workgroup, vec2<f32>>) {
diff --git a/test/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.wgsl
index 7f66524..faca86f 100644
--- a/test/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : mat2x2<f32>;
fn func(pointer : ptr<workgroup, vec2<f32>>) {
diff --git a/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl b/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl
index 382f211..68a5c91 100644
--- a/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : vec4<f32>;
fn func(pointer : ptr<workgroup, vec4<f32>>) {
diff --git a/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.wgsl
index 1244c4a..469e96d 100644
--- a/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : vec4<f32>;
fn func(pointer : ptr<workgroup, vec4<f32>>) {
diff --git a/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl
index 8143ef6..d258f5c 100644
--- a/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : mat2x4<f32>;
fn func(pointer : ptr<workgroup, vec4<f32>>) {
diff --git a/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.wgsl
index b58576d..5058fa2 100644
--- a/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
var<workgroup> S : mat2x4<f32>;
fn func(pointer : ptr<workgroup, vec4<f32>>) {
diff --git a/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl
index f21f9bf..f2706b2 100644
--- a/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
};
diff --git a/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl.expected.wgsl
index d6841c1..4d7c0fd 100644
--- a/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl.expected.wgsl
@@ -1,5 +1,3 @@
-enable chromium_experimental_full_ptr_parameters;
-
struct str {
i : vec4<f32>,
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.spvasm b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.spvasm
index 1033394..1df16f3 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.spvasm
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.spvasm
@@ -16,7 +16,7 @@
OpMemberName %OuterS 0 "a1"
OpName %InnerS "InnerS"
OpMemberName %InnerS 0 "v"
- OpName %f "f"
+ OpName %f_F "f_F"
OpName %p "p"
OpName %v "v"
OpName %main "main"
@@ -49,7 +49,7 @@
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
%27 = OpTypeFunction %void
%31 = OpConstantNull %OuterS
- %f = OpFunction %void None %6
+ %f_F = OpFunction %void None %6
%p = OpFunctionParameter %_ptr_Function_OuterS
%16 = OpLabel
%v = OpVariable %_ptr_Function_InnerS Function %19
@@ -63,6 +63,6 @@
%main = OpFunction %void None %27
%29 = OpLabel
%s1 = OpVariable %_ptr_Function_OuterS Function %31
- %32 = OpFunctionCall %void %f %s1
+ %32 = OpFunctionCall %void %f_F %s1
OpReturn
OpFunctionEnd