[tint] Add textureBarrier() builtin function Must only be called from compute stages and only if the chromium_experimental_read_write_storage_texture extension is enabled. Bug: tint:2007 Change-Id: I1790f65b5a4caebd8c30daff9efe3bf92d97cd12 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/146243 Reviewed-by: Ben Clayton <bclayton@google.com> Auto-Submit: James Price <jrprice@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def index eabb9dc..f08b591 100644 --- a/src/tint/lang/core/core.def +++ b/src/tint/lang/core/core.def
@@ -735,6 +735,7 @@ @stage("compute") fn workgroupBarrier() @must_use @stage("compute") fn workgroupUniformLoad<T>(ptr<workgroup, T, read_write>) -> T +@stage("compute") fn textureBarrier() @must_use fn textureDimensions<T: fiu32>(texture: texture_1d<T>) -> u32 @must_use fn textureDimensions<T: fiu32, L: iu32>(texture: texture_1d<T>, level: L) -> u32 @must_use fn textureDimensions<T: fiu32>(texture: texture_2d<T>) -> vec2<u32>
diff --git a/src/tint/lang/core/function.cc b/src/tint/lang/core/function.cc index 959b6fd..3d34627 100644 --- a/src/tint/lang/core/function.cc +++ b/src/tint/lang/core/function.cc
@@ -286,6 +286,9 @@ if (name == "workgroupUniformLoad") { return Function::kWorkgroupUniformLoad; } + if (name == "textureBarrier") { + return Function::kTextureBarrier; + } if (name == "textureDimensions") { return Function::kTextureDimensions; } @@ -551,6 +554,8 @@ return "workgroupBarrier"; case Function::kWorkgroupUniformLoad: return "workgroupUniformLoad"; + case Function::kTextureBarrier: + return "textureBarrier"; case Function::kTextureDimensions: return "textureDimensions"; case Function::kTextureGather: @@ -657,7 +662,8 @@ } bool IsBarrierBuiltin(Function f) { - return f == Function::kWorkgroupBarrier || f == Function::kStorageBarrier; + return f == Function::kWorkgroupBarrier || f == Function::kStorageBarrier || + f == Function::kTextureBarrier; } bool IsAtomicBuiltin(Function f) {
diff --git a/src/tint/lang/core/function.cc.tmpl b/src/tint/lang/core/function.cc.tmpl index 5bceedc..32ed851 100644 --- a/src/tint/lang/core/function.cc.tmpl +++ b/src/tint/lang/core/function.cc.tmpl
@@ -87,7 +87,8 @@ } bool IsBarrierBuiltin(Function f) { - return f == Function::kWorkgroupBarrier || f == Function::kStorageBarrier; + return f == Function::kWorkgroupBarrier || f == Function::kStorageBarrier || + f == Function::kTextureBarrier; } bool IsAtomicBuiltin(Function f) {
diff --git a/src/tint/lang/core/function.h b/src/tint/lang/core/function.h index c7a3263..0daf5b0 100644 --- a/src/tint/lang/core/function.h +++ b/src/tint/lang/core/function.h
@@ -119,6 +119,7 @@ kUnpack4X8Unorm, kWorkgroupBarrier, kWorkgroupUniformLoad, + kTextureBarrier, kTextureDimensions, kTextureGather, kTextureGatherCompare, @@ -256,6 +257,7 @@ Function::kUnpack4X8Unorm, Function::kWorkgroupBarrier, Function::kWorkgroupUniformLoad, + Function::kTextureBarrier, Function::kTextureDimensions, Function::kTextureGather, Function::kTextureGatherCompare, @@ -375,6 +377,7 @@ "unpack4x8unorm", "workgroupBarrier", "workgroupUniformLoad", + "textureBarrier", "textureDimensions", "textureGather", "textureGatherCompare",
diff --git a/src/tint/lang/core/intrinsic/data/data.cc b/src/tint/lang/core/intrinsic/data/data.cc index 547c83d..cbc2a3f 100644 --- a/src/tint/lang/core/intrinsic/data/data.cc +++ b/src/tint/lang/core/intrinsic/data/data.cc
@@ -11478,6 +11478,12 @@ }, { /* [87] */ + /* fn textureBarrier() */ + /* num overloads */ 1, + /* overloads */ OverloadIndex(447), + }, + { + /* [88] */ /* fn textureDimensions<T : fiu32>(texture: texture_1d<T>) -> u32 */ /* fn textureDimensions<T : fiu32, L : iu32>(texture: texture_1d<T>, level: L) -> u32 */ /* fn textureDimensions<T : fiu32>(texture: texture_2d<T>) -> vec2<u32> */ @@ -11509,7 +11515,7 @@ /* overloads */ OverloadIndex(0), }, { - /* [88] */ + /* [89] */ /* fn textureGather<T : fiu32, C : iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>) -> vec4<T> */ /* fn textureGather<T : fiu32, C : iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<T> */ /* fn textureGather<T : fiu32, C : iu32, A : iu32>(@const component: C, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: A) -> vec4<T> */ @@ -11526,7 +11532,7 @@ /* overloads */ OverloadIndex(93), }, { - /* [89] */ + /* [90] */ /* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> vec4<f32> */ /* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> vec4<f32> */ /* fn textureGatherCompare<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> vec4<f32> */ @@ -11537,7 +11543,7 @@ /* overloads */ OverloadIndex(174), }, { - /* [90] */ + /* [91] */ /* fn textureNumLayers<T : fiu32>(texture: texture_2d_array<T>) -> u32 */ /* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> u32 */ /* fn textureNumLayers(texture: texture_depth_2d_array) -> u32 */ @@ -11547,7 +11553,7 @@ /* overloads */ OverloadIndex(246), }, { - /* [91] */ + /* [92] */ /* fn textureNumLevels<T : fiu32>(texture: texture_1d<T>) -> u32 */ /* fn textureNumLevels<T : fiu32>(texture: texture_2d<T>) -> u32 */ /* fn textureNumLevels<T : fiu32>(texture: texture_2d_array<T>) -> u32 */ @@ -11562,14 +11568,14 @@ /* overloads */ OverloadIndex(129), }, { - /* [92] */ + /* [93] */ /* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> u32 */ /* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> u32 */ /* num overloads */ 2, /* overloads */ OverloadIndex(404), }, { - /* [93] */ + /* [94] */ /* fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32> */ /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */ /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */ @@ -11589,7 +11595,7 @@ /* overloads */ OverloadIndex(64), }, { - /* [94] */ + /* [95] */ /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32) -> vec4<f32> */ /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32, @const offset: vec2<i32>) -> vec4<f32> */ /* fn textureSampleBias<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, bias: f32) -> vec4<f32> */ @@ -11602,7 +11608,7 @@ /* overloads */ OverloadIndex(158), }, { - /* [95] */ + /* [96] */ /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */ /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> f32 */ /* fn textureSampleCompare<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> f32 */ @@ -11613,7 +11619,7 @@ /* overloads */ OverloadIndex(180), }, { - /* [96] */ + /* [97] */ /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */ /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> f32 */ /* fn textureSampleCompareLevel<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> f32 */ @@ -11624,7 +11630,7 @@ /* overloads */ OverloadIndex(186), }, { - /* [97] */ + /* [98] */ /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */ /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */ /* fn textureSampleGrad<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */ @@ -11637,7 +11643,7 @@ /* overloads */ OverloadIndex(166), }, { - /* [98] */ + /* [99] */ /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32> */ /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, @const offset: vec2<i32>) -> vec4<f32> */ /* fn textureSampleLevel<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32) -> vec4<f32> */ @@ -11656,14 +11662,14 @@ /* overloads */ OverloadIndex(79), }, { - /* [99] */ + /* [100] */ /* fn textureSampleBaseClampToEdge(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */ /* fn textureSampleBaseClampToEdge(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */ /* num overloads */ 2, /* overloads */ OverloadIndex(406), }, { - /* [100] */ + /* [101] */ /* fn textureStore<C : iu32>(texture: texture_storage_1d<f32_texel_format, writable>, coords: C, value: vec4<f32>) */ /* fn textureStore<C : iu32>(texture: texture_storage_2d<f32_texel_format, writable>, coords: vec2<C>, value: vec4<f32>) */ /* fn textureStore<C : iu32, A : iu32>(texture: texture_storage_2d_array<f32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<f32>) */ @@ -11680,7 +11686,7 @@ /* overloads */ OverloadIndex(105), }, { - /* [101] */ + /* [102] */ /* fn textureLoad<T : fiu32, C : iu32, L : iu32>(texture: texture_1d<T>, coords: C, level: L) -> vec4<T> */ /* fn textureLoad<T : fiu32, C : iu32, L : iu32>(texture: texture_2d<T>, coords: vec2<C>, level: L) -> vec4<T> */ /* fn textureLoad<T : fiu32, C : iu32, A : iu32, L : iu32>(texture: texture_2d_array<T>, coords: vec2<C>, array_index: A, level: L) -> vec4<T> */ @@ -11706,79 +11712,79 @@ /* overloads */ OverloadIndex(27), }, { - /* [102] */ + /* [103] */ /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */ /* num overloads */ 1, /* overloads */ OverloadIndex(455), }, { - /* [103] */ + /* [104] */ /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */ /* num overloads */ 1, /* overloads */ OverloadIndex(456), }, { - /* [104] */ + /* [105] */ /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ OverloadIndex(457), }, { - /* [105] */ + /* [106] */ /* fn atomicSub<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ OverloadIndex(457), }, { - /* [106] */ + /* [107] */ /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ OverloadIndex(457), }, { - /* [107] */ + /* [108] */ /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ OverloadIndex(457), }, { - /* [108] */ + /* [109] */ /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ OverloadIndex(457), }, { - /* [109] */ + /* [110] */ /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ OverloadIndex(457), }, { - /* [110] */ + /* [111] */ /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ OverloadIndex(457), }, { - /* [111] */ + /* [112] */ /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ OverloadIndex(457), }, { - /* [112] */ + /* [113] */ /* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> __atomic_compare_exchange_result<T> */ /* num overloads */ 1, /* overloads */ OverloadIndex(458), }, { - /* [113] */ + /* [114] */ /* fn subgroupBallot() -> vec4<u32> */ /* num overloads */ 1, /* overloads */ OverloadIndex(459), }, { - /* [114] */ + /* [115] */ /* fn _tint_materialize<T>(T) -> T */ /* num overloads */ 1, /* overloads */ OverloadIndex(460),
diff --git a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc index bcbd5f4..038be27 100644 --- a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc +++ b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
@@ -680,5 +680,31 @@ EXPECT_TRUE(r()->Resolve()); } +TEST_F(ResolverBuiltinValidationTest, TextureBarrierWithoutExtension) { + // fn func { textureBarrier(); } + Func("func", tint::Empty, ty.void_(), + Vector{ + CallStmt(Call(Source{Source::Location{12, 34}}, "textureBarrier")), + }); + + EXPECT_FALSE(r()->Resolve()); + EXPECT_EQ( + r()->error(), + R"(12:34 error: cannot call built-in function 'textureBarrier' without extension chromium_experimental_read_write_storage_texture)"); +} + +TEST_F(ResolverBuiltinValidationTest, TextureBarrierWithExtension) { + // enable chromium_experimental_read_write_storage_texture; + // fn func { textureBarrier(); } + Enable(core::Extension::kChromiumExperimentalReadWriteStorageTexture); + + Func("func", tint::Empty, ty.void_(), + Vector{ + CallStmt(Call(Source{Source::Location{12, 34}}, "textureBarrier")), + }); + + EXPECT_TRUE(r()->Resolve()) << r()->error(); +} + } // namespace } // namespace tint::resolver
diff --git a/src/tint/lang/wgsl/resolver/uniformity_test.cc b/src/tint/lang/wgsl/resolver/uniformity_test.cc index fc48e7f..0cba7df 100644 --- a/src/tint/lang/wgsl/resolver/uniformity_test.cc +++ b/src/tint/lang/wgsl/resolver/uniformity_test.cc
@@ -113,6 +113,7 @@ kUserRequiredToBeUniform, kWorkgroupBarrier, kStorageBarrier, + kTextureBarrier, kWorkgroupUniformLoad, kTextureSample, kTextureSampleBias, @@ -182,6 +183,8 @@ return "workgroupBarrier()"; case kStorageBarrier: return "storageBarrier()"; + case kTextureBarrier: + return "textureBarrier()"; case kWorkgroupUniformLoad: return "_ = workgroupUniformLoad(&w)"; case kTextureSample: @@ -257,6 +260,7 @@ CASE(kUserRequiredToBeUniform); CASE(kWorkgroupBarrier); CASE(kStorageBarrier); + CASE(kTextureBarrier); CASE(kWorkgroupUniformLoad); CASE(kTextureSample); CASE(kTextureSampleBias); @@ -284,6 +288,8 @@ auto condition = static_cast<Condition>(std::get<0>(GetParam())); auto function = static_cast<Function>(std::get<1>(GetParam())); std::string src = R"( +enable chromium_experimental_read_write_storage_texture; + var<private> p : i32; var<workgroup> w : i32; @group(0) @binding(0) var<uniform> u : i32;
diff --git a/src/tint/lang/wgsl/sem/builtin.cc b/src/tint/lang/wgsl/sem/builtin.cc index ece6ded..3845778 100644 --- a/src/tint/lang/wgsl/sem/builtin.cc +++ b/src/tint/lang/wgsl/sem/builtin.cc
@@ -99,6 +99,9 @@ if (IsSubgroup()) { return core::Extension::kChromiumExperimentalSubgroups; } + if (type_ == core::Function::kTextureBarrier) { + return core::Extension::kChromiumExperimentalReadWriteStorageTexture; + } return core::Extension::kUndefined; }
diff --git a/test/tint/builtins/gen/gen.wgsl.tmpl b/test/tint/builtins/gen/gen.wgsl.tmpl index d74ecf0..a9d5718 100644 --- a/test/tint/builtins/gen/gen.wgsl.tmpl +++ b/test/tint/builtins/gen/gen.wgsl.tmpl
@@ -208,7 +208,7 @@ {{ end -}} {{- /* Check and emit chromium_experimental_read_write_storage_texture */ -}} -{{- if OverloadUsesReadWriteStorageTexture $overload }} +{{- if or (OverloadUsesReadWriteStorageTexture $overload) (eq "textureBarrier" $builtin_name)}} enable chromium_experimental_read_write_storage_texture; {{ end -}}
diff --git a/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl new file mode 100644 index 0000000..0e66018 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl
@@ -0,0 +1,33 @@ +// Copyright 2023 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +enable chromium_experimental_read_write_storage_texture; + +// fn textureBarrier() +fn textureBarrier_3d0f7e() { + textureBarrier(); +} +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +}
diff --git a/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000..07414b9 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,18 @@ +SKIP: FAILED + + +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +} + +Failed to generate: builtins/gen/literal/textureBarrier/3d0f7e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture' +enable chromium_experimental_read_write_storage_texture; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +
diff --git a/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000..07414b9 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,18 @@ +SKIP: FAILED + + +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +} + +Failed to generate: builtins/gen/literal/textureBarrier/3d0f7e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture' +enable chromium_experimental_read_write_storage_texture; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +
diff --git a/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.glsl new file mode 100644 index 0000000..22638ea --- /dev/null +++ b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.glsl
@@ -0,0 +1,15 @@ +SKIP: FAILED + + +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +} + +Failed to generate: error: Unknown builtin method: textureBarrier
diff --git a/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.msl new file mode 100644 index 0000000..6ab09ee --- /dev/null +++ b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.msl
@@ -0,0 +1,18 @@ +SKIP: FAILED + + +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +} + +Failed to generate: builtins/gen/literal/textureBarrier/3d0f7e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture' +enable chromium_experimental_read_write_storage_texture; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +
diff --git a/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.spvasm new file mode 100644 index 0000000..101d0e9 --- /dev/null +++ b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.spvasm
@@ -0,0 +1,18 @@ +SKIP: FAILED + + +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +} + +Failed to generate: builtins/gen/literal/textureBarrier/3d0f7e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture' +enable chromium_experimental_read_write_storage_texture; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +
diff --git a/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.wgsl new file mode 100644 index 0000000..6dd62df --- /dev/null +++ b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.wgsl
@@ -0,0 +1,10 @@ +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +}
diff --git a/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl new file mode 100644 index 0000000..0e66018 --- /dev/null +++ b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl
@@ -0,0 +1,33 @@ +// Copyright 2023 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +enable chromium_experimental_read_write_storage_texture; + +// fn textureBarrier() +fn textureBarrier_3d0f7e() { + textureBarrier(); +} +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +}
diff --git a/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000..321204a --- /dev/null +++ b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,18 @@ +SKIP: FAILED + + +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +} + +Failed to generate: builtins/gen/var/textureBarrier/3d0f7e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture' +enable chromium_experimental_read_write_storage_texture; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +
diff --git a/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000..321204a --- /dev/null +++ b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,18 @@ +SKIP: FAILED + + +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +} + +Failed to generate: builtins/gen/var/textureBarrier/3d0f7e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture' +enable chromium_experimental_read_write_storage_texture; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +
diff --git a/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.glsl new file mode 100644 index 0000000..22638ea --- /dev/null +++ b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.glsl
@@ -0,0 +1,15 @@ +SKIP: FAILED + + +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +} + +Failed to generate: error: Unknown builtin method: textureBarrier
diff --git a/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.msl new file mode 100644 index 0000000..192df8b --- /dev/null +++ b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.msl
@@ -0,0 +1,18 @@ +SKIP: FAILED + + +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +} + +Failed to generate: builtins/gen/var/textureBarrier/3d0f7e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture' +enable chromium_experimental_read_write_storage_texture; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +
diff --git a/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.spvasm new file mode 100644 index 0000000..bc66566 --- /dev/null +++ b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.spvasm
@@ -0,0 +1,18 @@ +SKIP: FAILED + + +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +} + +Failed to generate: builtins/gen/var/textureBarrier/3d0f7e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture' +enable chromium_experimental_read_write_storage_texture; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +
diff --git a/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.wgsl new file mode 100644 index 0000000..6dd62df --- /dev/null +++ b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.wgsl
@@ -0,0 +1,10 @@ +enable chromium_experimental_read_write_storage_texture; + +fn textureBarrier_3d0f7e() { + textureBarrier(); +} + +@compute @workgroup_size(1) +fn compute_main() { + textureBarrier_3d0f7e(); +}