mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-06 14:43:31 +00:00
transform: Do not generate block attributes
These are no longer necessary, and the attribute will soon be deprecated and removed. Bug: tint:1324 Change-Id: Ia3cdd4e9d9bd7bca45d734a06466993199b3e838 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/72085 Reviewed-by: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
parent
7c0693d9fe
commit
ebdfa5d303
@ -18,7 +18,6 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "src/ast/struct_block_decoration.h"
|
|
||||||
#include "src/program_builder.h"
|
#include "src/program_builder.h"
|
||||||
#include "src/sem/call.h"
|
#include "src/sem/call.h"
|
||||||
#include "src/sem/variable.h"
|
#include "src/sem/variable.h"
|
||||||
@ -144,9 +143,7 @@ void ArrayLengthFromUniform::Run(CloneContext& ctx,
|
|||||||
{ctx.dst->Member(
|
{ctx.dst->Member(
|
||||||
kBufferSizeMemberName,
|
kBufferSizeMemberName,
|
||||||
ctx.dst->ty.array(ctx.dst->ty.vec4(ctx.dst->ty.u32()),
|
ctx.dst->ty.array(ctx.dst->ty.vec4(ctx.dst->ty.u32()),
|
||||||
(max_buffer_size_index / 4) + 1))},
|
(max_buffer_size_index / 4) + 1))});
|
||||||
|
|
||||||
ast::DecorationList{ctx.dst->create<ast::StructBlockDecoration>()});
|
|
||||||
buffer_size_ubo = ctx.dst->Global(
|
buffer_size_ubo = ctx.dst->Global(
|
||||||
ctx.dst->Sym(), ctx.dst->ty.Of(buffer_size_struct),
|
ctx.dst->Sym(), ctx.dst->ty.Of(buffer_size_struct),
|
||||||
ast::StorageClass::kUniform,
|
ast::StorageClass::kUniform,
|
||||||
|
@ -34,7 +34,6 @@ namespace transform {
|
|||||||
///
|
///
|
||||||
/// The generated uniform buffer will have the form:
|
/// The generated uniform buffer will have the form:
|
||||||
/// ```
|
/// ```
|
||||||
/// [[block]]
|
|
||||||
/// struct buffer_size_struct {
|
/// struct buffer_size_struct {
|
||||||
/// buffer_size : array<u32, 8>;
|
/// buffer_size : array<u32, 8>;
|
||||||
/// };
|
/// };
|
||||||
|
@ -52,7 +52,6 @@ TEST_F(ArrayLengthFromUniformTest, Error_MissingSimplifyPointers) {
|
|||||||
|
|
||||||
TEST_F(ArrayLengthFromUniformTest, Basic) {
|
TEST_F(ArrayLengthFromUniformTest, Basic) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
@ -67,14 +66,12 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol {
|
struct tint_symbol {
|
||||||
buffer_size : array<vec4<u32>, 1u>;
|
buffer_size : array<vec4<u32>, 1u>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
|
[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
@ -103,7 +100,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(ArrayLengthFromUniformTest, WithStride) {
|
TEST_F(ArrayLengthFromUniformTest, WithStride) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
y : f32;
|
y : f32;
|
||||||
@ -119,14 +115,12 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol {
|
struct tint_symbol {
|
||||||
buffer_size : array<vec4<u32>, 1u>;
|
buffer_size : array<vec4<u32>, 1u>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
|
[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
y : f32;
|
y : f32;
|
||||||
@ -156,27 +150,22 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(ArrayLengthFromUniformTest, MultipleStorageBuffers) {
|
TEST_F(ArrayLengthFromUniformTest, MultipleStorageBuffers) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB1 {
|
struct SB1 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr1 : array<i32>;
|
arr1 : array<i32>;
|
||||||
};
|
};
|
||||||
[[block]]
|
|
||||||
struct SB2 {
|
struct SB2 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr2 : array<vec4<f32>>;
|
arr2 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
[[block]]
|
|
||||||
struct SB3 {
|
struct SB3 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr3 : array<vec4<f32>>;
|
arr3 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
[[block]]
|
|
||||||
struct SB4 {
|
struct SB4 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr4 : array<vec4<f32>>;
|
arr4 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
[[block]]
|
|
||||||
struct SB5 {
|
struct SB5 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr5 : array<vec4<f32>>;
|
arr5 : array<vec4<f32>>;
|
||||||
@ -200,38 +189,32 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol {
|
struct tint_symbol {
|
||||||
buffer_size : array<vec4<u32>, 2u>;
|
buffer_size : array<vec4<u32>, 2u>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
|
[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB1 {
|
struct SB1 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr1 : array<i32>;
|
arr1 : array<i32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB2 {
|
struct SB2 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr2 : array<vec4<f32>>;
|
arr2 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB3 {
|
struct SB3 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr3 : array<vec4<f32>>;
|
arr3 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB4 {
|
struct SB4 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr4 : array<vec4<f32>>;
|
arr4 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB5 {
|
struct SB5 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr5 : array<vec4<f32>>;
|
arr5 : array<vec4<f32>>;
|
||||||
@ -277,27 +260,22 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(ArrayLengthFromUniformTest, MultipleUnusedStorageBuffers) {
|
TEST_F(ArrayLengthFromUniformTest, MultipleUnusedStorageBuffers) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB1 {
|
struct SB1 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr1 : array<i32>;
|
arr1 : array<i32>;
|
||||||
};
|
};
|
||||||
[[block]]
|
|
||||||
struct SB2 {
|
struct SB2 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr2 : array<vec4<f32>>;
|
arr2 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
[[block]]
|
|
||||||
struct SB3 {
|
struct SB3 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr3 : array<vec4<f32>>;
|
arr3 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
[[block]]
|
|
||||||
struct SB4 {
|
struct SB4 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr4 : array<vec4<f32>>;
|
arr4 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
[[block]]
|
|
||||||
struct SB5 {
|
struct SB5 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr5 : array<vec4<f32>>;
|
arr5 : array<vec4<f32>>;
|
||||||
@ -318,38 +296,32 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol {
|
struct tint_symbol {
|
||||||
buffer_size : array<vec4<u32>, 1u>;
|
buffer_size : array<vec4<u32>, 1u>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
|
[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB1 {
|
struct SB1 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr1 : array<i32>;
|
arr1 : array<i32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB2 {
|
struct SB2 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr2 : array<vec4<f32>>;
|
arr2 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB3 {
|
struct SB3 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr3 : array<vec4<f32>>;
|
arr3 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB4 {
|
struct SB4 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr4 : array<vec4<f32>>;
|
arr4 : array<vec4<f32>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB5 {
|
struct SB5 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr5 : array<vec4<f32>>;
|
arr5 : array<vec4<f32>>;
|
||||||
@ -392,7 +364,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(ArrayLengthFromUniformTest, NoArrayLengthCalls) {
|
TEST_F(ArrayLengthFromUniformTest, NoArrayLengthCalls) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
@ -421,13 +392,11 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(ArrayLengthFromUniformTest, MissingBindingPointToIndexMapping) {
|
TEST_F(ArrayLengthFromUniformTest, MissingBindingPointToIndexMapping) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB1 {
|
struct SB1 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr1 : array<i32>;
|
arr1 : array<i32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB2 {
|
struct SB2 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr2 : array<vec4<f32>>;
|
arr2 : array<vec4<f32>>;
|
||||||
@ -446,20 +415,17 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol {
|
struct tint_symbol {
|
||||||
buffer_size : array<vec4<u32>, 1u>;
|
buffer_size : array<vec4<u32>, 1u>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
|
[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB1 {
|
struct SB1 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr1 : array<i32>;
|
arr1 : array<i32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB2 {
|
struct SB2 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr2 : array<vec4<f32>>;
|
arr2 : array<vec4<f32>>;
|
||||||
|
@ -26,7 +26,6 @@ using BindingRemapperTest = TransformTest;
|
|||||||
|
|
||||||
TEST_F(BindingRemapperTest, NoRemappings) {
|
TEST_F(BindingRemapperTest, NoRemappings) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -52,7 +51,6 @@ fn f() {
|
|||||||
|
|
||||||
TEST_F(BindingRemapperTest, RemapBindingPoints) {
|
TEST_F(BindingRemapperTest, RemapBindingPoints) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -67,7 +65,6 @@ fn f() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -96,7 +93,6 @@ fn f() {
|
|||||||
|
|
||||||
TEST_F(BindingRemapperTest, RemapAccessControls) {
|
TEST_F(BindingRemapperTest, RemapAccessControls) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -113,7 +109,6 @@ fn f() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -146,7 +141,6 @@ fn f() {
|
|||||||
// decorations in type aliases. If not, just remove.
|
// decorations in type aliases. If not, just remove.
|
||||||
TEST_F(BindingRemapperTest, DISABLED_RemapAccessControlsWithAliases) {
|
TEST_F(BindingRemapperTest, DISABLED_RemapAccessControlsWithAliases) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -169,7 +163,6 @@ fn f() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -206,7 +199,6 @@ fn f() {
|
|||||||
|
|
||||||
TEST_F(BindingRemapperTest, RemapAll) {
|
TEST_F(BindingRemapperTest, RemapAll) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -221,7 +213,6 @@ fn f() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -252,7 +243,6 @@ fn f() {
|
|||||||
|
|
||||||
TEST_F(BindingRemapperTest, BindingCollisionsSameEntryPoint) {
|
TEST_F(BindingRemapperTest, BindingCollisionsSameEntryPoint) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
i : i32;
|
i : i32;
|
||||||
};
|
};
|
||||||
@ -272,7 +262,6 @@ fn f() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
i : i32;
|
i : i32;
|
||||||
};
|
};
|
||||||
@ -306,7 +295,6 @@ fn f() {
|
|||||||
|
|
||||||
TEST_F(BindingRemapperTest, BindingCollisionsDifferentEntryPoints) {
|
TEST_F(BindingRemapperTest, BindingCollisionsDifferentEntryPoints) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
i : i32;
|
i : i32;
|
||||||
};
|
};
|
||||||
@ -331,7 +319,6 @@ fn f2() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
i : i32;
|
i : i32;
|
||||||
};
|
};
|
||||||
@ -370,7 +357,6 @@ fn f2() {
|
|||||||
|
|
||||||
TEST_F(BindingRemapperTest, NoData) {
|
TEST_F(BindingRemapperTest, NoData) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
|
@ -38,7 +38,6 @@ TEST_F(CalculateArrayLengthTest, Error_MissingCalculateArrayLength) {
|
|||||||
|
|
||||||
TEST_F(CalculateArrayLengthTest, Basic) {
|
TEST_F(CalculateArrayLengthTest, Basic) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
@ -53,7 +52,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
@ -80,7 +78,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(CalculateArrayLengthTest, InSameBlock) {
|
TEST_F(CalculateArrayLengthTest, InSameBlock) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
@ -97,7 +94,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
@ -126,7 +122,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(CalculateArrayLengthTest, WithStride) {
|
TEST_F(CalculateArrayLengthTest, WithStride) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
y : f32;
|
y : f32;
|
||||||
@ -142,7 +137,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
y : f32;
|
y : f32;
|
||||||
@ -170,7 +164,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(CalculateArrayLengthTest, Nested) {
|
TEST_F(CalculateArrayLengthTest, Nested) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
@ -191,7 +184,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
@ -227,13 +219,11 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(CalculateArrayLengthTest, MultipleStorageBuffers) {
|
TEST_F(CalculateArrayLengthTest, MultipleStorageBuffers) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB1 {
|
struct SB1 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr1 : array<i32>;
|
arr1 : array<i32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB2 {
|
struct SB2 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr2 : array<vec4<f32>>;
|
arr2 : array<vec4<f32>>;
|
||||||
@ -252,7 +242,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct SB1 {
|
struct SB1 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr1 : array<i32>;
|
arr1 : array<i32>;
|
||||||
@ -261,7 +250,6 @@ struct SB1 {
|
|||||||
[[internal(intrinsic_buffer_size)]]
|
[[internal(intrinsic_buffer_size)]]
|
||||||
fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB1, result : ptr<function, u32>)
|
fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB1, result : ptr<function, u32>)
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB2 {
|
struct SB2 {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr2 : array<vec4<f32>>;
|
arr2 : array<vec4<f32>>;
|
||||||
@ -295,7 +283,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(CalculateArrayLengthTest, Shadowing) {
|
TEST_F(CalculateArrayLengthTest, Shadowing) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
@ -316,7 +303,6 @@ fn main() {
|
|||||||
|
|
||||||
auto* expect =
|
auto* expect =
|
||||||
R"(
|
R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
x : i32;
|
x : i32;
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
|
@ -1320,7 +1320,6 @@ fn main2() -> tint_symbol_1 {
|
|||||||
|
|
||||||
TEST_F(CanonicalizeEntryPointIOTest, Struct_LayoutDecorations) {
|
TEST_F(CanonicalizeEntryPointIOTest, Struct_LayoutDecorations) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct FragmentInput {
|
struct FragmentInput {
|
||||||
[[size(16), location(1)]] value : f32;
|
[[size(16), location(1)]] value : f32;
|
||||||
[[builtin(position)]] [[align(32)]] coord : vec4<f32>;
|
[[builtin(position)]] [[align(32)]] coord : vec4<f32>;
|
||||||
@ -1338,7 +1337,6 @@ fn frag_main(inputs : FragmentInput) -> FragmentOutput {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct FragmentInput {
|
struct FragmentInput {
|
||||||
[[size(16)]]
|
[[size(16)]]
|
||||||
value : f32;
|
value : f32;
|
||||||
|
@ -24,7 +24,6 @@ using DecomposeMemoryAccessTest = TransformTest;
|
|||||||
|
|
||||||
TEST_F(DecomposeMemoryAccessTest, SB_BasicLoad) {
|
TEST_F(DecomposeMemoryAccessTest, SB_BasicLoad) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
a : i32;
|
a : i32;
|
||||||
b : u32;
|
b : u32;
|
||||||
@ -80,7 +79,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
a : i32;
|
a : i32;
|
||||||
b : u32;
|
b : u32;
|
||||||
@ -222,7 +220,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(DecomposeMemoryAccessTest, UB_BasicLoad) {
|
TEST_F(DecomposeMemoryAccessTest, UB_BasicLoad) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct UB {
|
struct UB {
|
||||||
a : i32;
|
a : i32;
|
||||||
b : u32;
|
b : u32;
|
||||||
@ -278,7 +275,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct UB {
|
struct UB {
|
||||||
a : i32;
|
a : i32;
|
||||||
b : u32;
|
b : u32;
|
||||||
@ -420,7 +416,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(DecomposeMemoryAccessTest, SB_BasicStore) {
|
TEST_F(DecomposeMemoryAccessTest, SB_BasicStore) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
a : i32;
|
a : i32;
|
||||||
b : u32;
|
b : u32;
|
||||||
@ -476,7 +471,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
a : i32;
|
a : i32;
|
||||||
b : u32;
|
b : u32;
|
||||||
@ -635,7 +629,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(DecomposeMemoryAccessTest, LoadStructure) {
|
TEST_F(DecomposeMemoryAccessTest, LoadStructure) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
a : i32;
|
a : i32;
|
||||||
b : u32;
|
b : u32;
|
||||||
@ -670,7 +663,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
a : i32;
|
a : i32;
|
||||||
b : u32;
|
b : u32;
|
||||||
@ -795,7 +787,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(DecomposeMemoryAccessTest, StoreStructure) {
|
TEST_F(DecomposeMemoryAccessTest, StoreStructure) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
a : i32;
|
a : i32;
|
||||||
b : u32;
|
b : u32;
|
||||||
@ -830,7 +821,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
a : i32;
|
a : i32;
|
||||||
b : u32;
|
b : u32;
|
||||||
@ -1005,7 +995,6 @@ struct S2 {
|
|||||||
c : i32;
|
c : i32;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
[[size(128)]]
|
[[size(128)]]
|
||||||
a : i32;
|
a : i32;
|
||||||
@ -1040,7 +1029,6 @@ struct S2 {
|
|||||||
c : i32;
|
c : i32;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
[[size(128)]]
|
[[size(128)]]
|
||||||
a : i32;
|
a : i32;
|
||||||
@ -1077,7 +1065,6 @@ struct S2 {
|
|||||||
c : i32;
|
c : i32;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
[[size(128)]]
|
[[size(128)]]
|
||||||
a : i32;
|
a : i32;
|
||||||
@ -1108,7 +1095,6 @@ struct S2 {
|
|||||||
c : i32;
|
c : i32;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
[[size(128)]]
|
[[size(128)]]
|
||||||
a : i32;
|
a : i32;
|
||||||
@ -1156,7 +1142,6 @@ type A2 = S2;
|
|||||||
|
|
||||||
type A2_Array = [[stride(256)]] array<S2>;
|
type A2_Array = [[stride(256)]] array<S2>;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
[[size(128)]]
|
[[size(128)]]
|
||||||
a : i32;
|
a : i32;
|
||||||
@ -1195,7 +1180,6 @@ type A2 = S2;
|
|||||||
|
|
||||||
type A2_Array = [[stride(256)]] array<S2>;
|
type A2_Array = [[stride(256)]] array<S2>;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
[[size(128)]]
|
[[size(128)]]
|
||||||
a : i32;
|
a : i32;
|
||||||
@ -1223,7 +1207,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(DecomposeMemoryAccessTest, StorageBufferAtomics) {
|
TEST_F(DecomposeMemoryAccessTest, StorageBufferAtomics) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
padding : vec4<f32>;
|
padding : vec4<f32>;
|
||||||
a : atomic<i32>;
|
a : atomic<i32>;
|
||||||
@ -1261,7 +1244,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct SB {
|
struct SB {
|
||||||
padding : vec4<f32>;
|
padding : vec4<f32>;
|
||||||
a : atomic<i32>;
|
a : atomic<i32>;
|
||||||
|
@ -51,7 +51,6 @@ TEST_F(DecomposeStridedMatrixTest, MissingDependencySimplify) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix) {
|
TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix) {
|
||||||
// [[block]]
|
|
||||||
// struct S {
|
// struct S {
|
||||||
// [[offset(16), stride(32)]]
|
// [[offset(16), stride(32)]]
|
||||||
// [[internal(ignore_stride_decoration)]]
|
// [[internal(ignore_stride_decoration)]]
|
||||||
@ -74,9 +73,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix) {
|
|||||||
b.create<ast::StrideDecoration>(32),
|
b.create<ast::StrideDecoration>(32),
|
||||||
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
||||||
}),
|
}),
|
||||||
},
|
|
||||||
{
|
|
||||||
b.StructBlock(),
|
|
||||||
});
|
});
|
||||||
b.Global("s", b.ty.Of(S), ast::StorageClass::kUniform,
|
b.Global("s", b.ty.Of(S), ast::StorageClass::kUniform,
|
||||||
b.GroupAndBinding(0, 0));
|
b.GroupAndBinding(0, 0));
|
||||||
@ -91,7 +87,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
[[size(16)]]
|
[[size(16)]]
|
||||||
padding : u32;
|
padding : u32;
|
||||||
@ -117,7 +112,6 @@ fn f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(DecomposeStridedMatrixTest, ReadUniformColumn) {
|
TEST_F(DecomposeStridedMatrixTest, ReadUniformColumn) {
|
||||||
// [[block]]
|
|
||||||
// struct S {
|
// struct S {
|
||||||
// [[offset(16), stride(32)]]
|
// [[offset(16), stride(32)]]
|
||||||
// [[internal(ignore_stride_decoration)]]
|
// [[internal(ignore_stride_decoration)]]
|
||||||
@ -140,9 +134,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformColumn) {
|
|||||||
b.create<ast::StrideDecoration>(32),
|
b.create<ast::StrideDecoration>(32),
|
||||||
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
||||||
}),
|
}),
|
||||||
},
|
|
||||||
{
|
|
||||||
b.StructBlock(),
|
|
||||||
});
|
});
|
||||||
b.Global("s", b.ty.Of(S), ast::StorageClass::kUniform,
|
b.Global("s", b.ty.Of(S), ast::StorageClass::kUniform,
|
||||||
b.GroupAndBinding(0, 0));
|
b.GroupAndBinding(0, 0));
|
||||||
@ -157,7 +148,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformColumn) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
[[size(16)]]
|
[[size(16)]]
|
||||||
padding : u32;
|
padding : u32;
|
||||||
@ -179,7 +169,6 @@ fn f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix_DefaultStride) {
|
TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix_DefaultStride) {
|
||||||
// [[block]]
|
|
||||||
// struct S {
|
// struct S {
|
||||||
// [[offset(16), stride(8)]]
|
// [[offset(16), stride(8)]]
|
||||||
// [[internal(ignore_stride_decoration)]]
|
// [[internal(ignore_stride_decoration)]]
|
||||||
@ -202,9 +191,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix_DefaultStride) {
|
|||||||
b.create<ast::StrideDecoration>(8),
|
b.create<ast::StrideDecoration>(8),
|
||||||
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
||||||
}),
|
}),
|
||||||
},
|
|
||||||
{
|
|
||||||
b.StructBlock(),
|
|
||||||
});
|
});
|
||||||
b.Global("s", b.ty.Of(S), ast::StorageClass::kUniform,
|
b.Global("s", b.ty.Of(S), ast::StorageClass::kUniform,
|
||||||
b.GroupAndBinding(0, 0));
|
b.GroupAndBinding(0, 0));
|
||||||
@ -219,7 +205,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix_DefaultStride) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
[[size(16)]]
|
[[size(16)]]
|
||||||
padding : u32;
|
padding : u32;
|
||||||
@ -242,7 +227,6 @@ fn f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(DecomposeStridedMatrixTest, ReadStorageMatrix) {
|
TEST_F(DecomposeStridedMatrixTest, ReadStorageMatrix) {
|
||||||
// [[block]]
|
|
||||||
// struct S {
|
// struct S {
|
||||||
// [[offset(8), stride(32)]]
|
// [[offset(8), stride(32)]]
|
||||||
// [[internal(ignore_stride_decoration)]]
|
// [[internal(ignore_stride_decoration)]]
|
||||||
@ -265,9 +249,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadStorageMatrix) {
|
|||||||
b.create<ast::StrideDecoration>(32),
|
b.create<ast::StrideDecoration>(32),
|
||||||
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
||||||
}),
|
}),
|
||||||
},
|
|
||||||
{
|
|
||||||
b.StructBlock(),
|
|
||||||
});
|
});
|
||||||
b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
|
b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
|
||||||
ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
|
ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
|
||||||
@ -282,7 +263,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadStorageMatrix) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
[[size(8)]]
|
[[size(8)]]
|
||||||
padding : u32;
|
padding : u32;
|
||||||
@ -308,7 +288,6 @@ fn f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(DecomposeStridedMatrixTest, ReadStorageColumn) {
|
TEST_F(DecomposeStridedMatrixTest, ReadStorageColumn) {
|
||||||
// [[block]]
|
|
||||||
// struct S {
|
// struct S {
|
||||||
// [[offset(16), stride(32)]]
|
// [[offset(16), stride(32)]]
|
||||||
// [[internal(ignore_stride_decoration)]]
|
// [[internal(ignore_stride_decoration)]]
|
||||||
@ -331,9 +310,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadStorageColumn) {
|
|||||||
b.create<ast::StrideDecoration>(32),
|
b.create<ast::StrideDecoration>(32),
|
||||||
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
||||||
}),
|
}),
|
||||||
},
|
|
||||||
{
|
|
||||||
b.StructBlock(),
|
|
||||||
});
|
});
|
||||||
b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
|
b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
|
||||||
ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
|
ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
|
||||||
@ -348,7 +324,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadStorageColumn) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
[[size(16)]]
|
[[size(16)]]
|
||||||
padding : u32;
|
padding : u32;
|
||||||
@ -370,7 +345,6 @@ fn f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(DecomposeStridedMatrixTest, WriteStorageMatrix) {
|
TEST_F(DecomposeStridedMatrixTest, WriteStorageMatrix) {
|
||||||
// [[block]]
|
|
||||||
// struct S {
|
// struct S {
|
||||||
// [[offset(8), stride(32)]]
|
// [[offset(8), stride(32)]]
|
||||||
// [[internal(ignore_stride_decoration)]]
|
// [[internal(ignore_stride_decoration)]]
|
||||||
@ -393,9 +367,6 @@ TEST_F(DecomposeStridedMatrixTest, WriteStorageMatrix) {
|
|||||||
b.create<ast::StrideDecoration>(32),
|
b.create<ast::StrideDecoration>(32),
|
||||||
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
||||||
}),
|
}),
|
||||||
},
|
|
||||||
{
|
|
||||||
b.StructBlock(),
|
|
||||||
});
|
});
|
||||||
b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
|
b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
|
||||||
ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
|
ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
|
||||||
@ -411,7 +382,6 @@ TEST_F(DecomposeStridedMatrixTest, WriteStorageMatrix) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
[[size(8)]]
|
[[size(8)]]
|
||||||
padding : u32;
|
padding : u32;
|
||||||
@ -437,7 +407,6 @@ fn f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(DecomposeStridedMatrixTest, WriteStorageColumn) {
|
TEST_F(DecomposeStridedMatrixTest, WriteStorageColumn) {
|
||||||
// [[block]]
|
|
||||||
// struct S {
|
// struct S {
|
||||||
// [[offset(8), stride(32)]]
|
// [[offset(8), stride(32)]]
|
||||||
// [[internal(ignore_stride_decoration)]]
|
// [[internal(ignore_stride_decoration)]]
|
||||||
@ -460,9 +429,6 @@ TEST_F(DecomposeStridedMatrixTest, WriteStorageColumn) {
|
|||||||
b.create<ast::StrideDecoration>(32),
|
b.create<ast::StrideDecoration>(32),
|
||||||
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
||||||
}),
|
}),
|
||||||
},
|
|
||||||
{
|
|
||||||
b.StructBlock(),
|
|
||||||
});
|
});
|
||||||
b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
|
b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
|
||||||
ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
|
ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
|
||||||
@ -477,7 +443,6 @@ TEST_F(DecomposeStridedMatrixTest, WriteStorageColumn) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
[[size(8)]]
|
[[size(8)]]
|
||||||
padding : u32;
|
padding : u32;
|
||||||
@ -499,7 +464,6 @@ fn f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(DecomposeStridedMatrixTest, ReadWriteViaPointerLets) {
|
TEST_F(DecomposeStridedMatrixTest, ReadWriteViaPointerLets) {
|
||||||
// [[block]]
|
|
||||||
// struct S {
|
// struct S {
|
||||||
// [[offset(8), stride(32)]]
|
// [[offset(8), stride(32)]]
|
||||||
// [[internal(ignore_stride_decoration)]]
|
// [[internal(ignore_stride_decoration)]]
|
||||||
@ -528,9 +492,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadWriteViaPointerLets) {
|
|||||||
b.create<ast::StrideDecoration>(32),
|
b.create<ast::StrideDecoration>(32),
|
||||||
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
|
||||||
}),
|
}),
|
||||||
},
|
|
||||||
{
|
|
||||||
b.StructBlock(),
|
|
||||||
});
|
});
|
||||||
b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
|
b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
|
||||||
ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
|
ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
|
||||||
@ -554,7 +515,6 @@ TEST_F(DecomposeStridedMatrixTest, ReadWriteViaPointerLets) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
[[size(8)]]
|
[[size(8)]]
|
||||||
padding : u32;
|
padding : u32;
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "src/ast/struct_block_decoration.h"
|
|
||||||
#include "src/program_builder.h"
|
#include "src/program_builder.h"
|
||||||
#include "src/sem/function.h"
|
#include "src/sem/function.h"
|
||||||
#include "src/sem/member_accessor_expression.h"
|
#include "src/sem/member_accessor_expression.h"
|
||||||
@ -133,9 +132,7 @@ void FirstIndexOffset::Run(CloneContext& ctx,
|
|||||||
instance_index_offset = offset;
|
instance_index_offset = offset;
|
||||||
offset += 4;
|
offset += 4;
|
||||||
}
|
}
|
||||||
auto* struct_ =
|
auto* struct_ = ctx.dst->Structure(ctx.dst->Sym(), std::move(members));
|
||||||
ctx.dst->Structure(ctx.dst->Sym(), std::move(members),
|
|
||||||
{ctx.dst->create<ast::StructBlockDecoration>()});
|
|
||||||
|
|
||||||
// Create a global to hold the uniform buffer
|
// Create a global to hold the uniform buffer
|
||||||
Symbol buffer_name = ctx.dst->Sym();
|
Symbol buffer_name = ctx.dst->Sym();
|
||||||
|
@ -41,7 +41,6 @@ namespace transform {
|
|||||||
/// }
|
/// }
|
||||||
///
|
///
|
||||||
/// After:
|
/// After:
|
||||||
/// [[block]]
|
|
||||||
/// struct TintFirstIndexOffsetData {
|
/// struct TintFirstIndexOffsetData {
|
||||||
/// tint_first_vertex_index : u32;
|
/// tint_first_vertex_index : u32;
|
||||||
/// tint_first_instance_index : u32;
|
/// tint_first_instance_index : u32;
|
||||||
|
@ -59,7 +59,6 @@ fn entry([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol {
|
struct tint_symbol {
|
||||||
first_vertex_index : u32;
|
first_vertex_index : u32;
|
||||||
};
|
};
|
||||||
@ -106,7 +105,6 @@ fn entry([[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] ve
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol {
|
struct tint_symbol {
|
||||||
first_instance_index : u32;
|
first_instance_index : u32;
|
||||||
};
|
};
|
||||||
@ -158,7 +156,6 @@ fn entry(inputs : Inputs) -> [[builtin(position)]] vec4<f32> {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol {
|
struct tint_symbol {
|
||||||
first_vertex_index : u32;
|
first_vertex_index : u32;
|
||||||
first_instance_index : u32;
|
first_instance_index : u32;
|
||||||
@ -217,7 +214,6 @@ fn entry([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol {
|
struct tint_symbol {
|
||||||
first_vertex_index : u32;
|
first_vertex_index : u32;
|
||||||
};
|
};
|
||||||
@ -280,7 +276,6 @@ fn entry_c([[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]]
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol {
|
struct tint_symbol {
|
||||||
first_vertex_index : u32;
|
first_vertex_index : u32;
|
||||||
first_instance_index : u32;
|
first_instance_index : u32;
|
||||||
|
@ -33,7 +33,6 @@ namespace transform {
|
|||||||
///
|
///
|
||||||
/// Before:
|
/// Before:
|
||||||
/// ```
|
/// ```
|
||||||
/// [[block]]
|
|
||||||
/// struct S {
|
/// struct S {
|
||||||
/// f : f32;
|
/// f : f32;
|
||||||
/// };
|
/// };
|
||||||
|
@ -199,7 +199,6 @@ fn main() {
|
|||||||
|
|
||||||
TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_Basic) {
|
TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_Basic) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -217,7 +216,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -236,7 +234,6 @@ fn main([[group(0), binding(0), internal(disable_validation__entry_point_paramet
|
|||||||
|
|
||||||
TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_FunctionCalls) {
|
TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_FunctionCalls) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -268,7 +265,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -490,7 +486,6 @@ fn main([[internal(disable_validation__entry_point_parameter)]] tint_symbol_1 :
|
|||||||
|
|
||||||
TEST_F(ModuleScopeVarToEntryPointParamTest, UnusedVariables) {
|
TEST_F(ModuleScopeVarToEntryPointParamTest, UnusedVariables) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
@ -512,7 +507,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
};
|
};
|
||||||
|
@ -241,8 +241,7 @@ struct MultiplanarExternalTexture::State {
|
|||||||
|
|
||||||
params_struct_sym = b.Symbols().New("ExternalTextureParams");
|
params_struct_sym = b.Symbols().New("ExternalTextureParams");
|
||||||
|
|
||||||
b.Structure(params_struct_sym, member_list,
|
b.Structure(params_struct_sym, member_list);
|
||||||
ast::DecorationList{b.StructBlock()});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Constructs a StatementList containing all the statements making up the
|
/// Constructs a StatementList containing all the statements making up the
|
||||||
|
@ -78,7 +78,6 @@ fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32;
|
numPlanes : u32;
|
||||||
vr : f32;
|
vr : f32;
|
||||||
@ -123,7 +122,6 @@ fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
|
|||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[group(0), binding(0)]] var s : sampler;
|
[[group(0), binding(0)]] var s : sampler;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32;
|
numPlanes : u32;
|
||||||
vr : f32;
|
vr : f32;
|
||||||
@ -177,7 +175,6 @@ fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32;
|
numPlanes : u32;
|
||||||
vr : f32;
|
vr : f32;
|
||||||
@ -235,7 +232,6 @@ fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
|
|||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[group(0), binding(0)]] var s : sampler;
|
[[group(0), binding(0)]] var s : sampler;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32;
|
numPlanes : u32;
|
||||||
vr : f32;
|
vr : f32;
|
||||||
@ -309,7 +305,6 @@ fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
|
|||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[group(0), binding(0)]] var s : sampler;
|
[[group(0), binding(0)]] var s : sampler;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32;
|
numPlanes : u32;
|
||||||
vr : f32;
|
vr : f32;
|
||||||
@ -392,7 +387,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32;
|
numPlanes : u32;
|
||||||
vr : f32;
|
vr : f32;
|
||||||
@ -459,7 +453,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32;
|
numPlanes : u32;
|
||||||
vr : f32;
|
vr : f32;
|
||||||
@ -528,7 +521,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32;
|
numPlanes : u32;
|
||||||
vr : f32;
|
vr : f32;
|
||||||
@ -607,7 +599,6 @@ fn main() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32;
|
numPlanes : u32;
|
||||||
vr : f32;
|
vr : f32;
|
||||||
|
@ -122,8 +122,7 @@ void NumWorkgroupsFromUniform::Run(CloneContext& ctx,
|
|||||||
auto* num_workgroups_struct = ctx.dst->Structure(
|
auto* num_workgroups_struct = ctx.dst->Structure(
|
||||||
ctx.dst->Sym(),
|
ctx.dst->Sym(),
|
||||||
{ctx.dst->Member(kNumWorkgroupsMemberName,
|
{ctx.dst->Member(kNumWorkgroupsMemberName,
|
||||||
ctx.dst->ty.vec3(ctx.dst->ty.u32()))},
|
ctx.dst->ty.vec3(ctx.dst->ty.u32()))});
|
||||||
ast::DecorationList{ctx.dst->create<ast::StructBlockDecoration>()});
|
|
||||||
num_workgroups_ubo = ctx.dst->Global(
|
num_workgroups_ubo = ctx.dst->Global(
|
||||||
ctx.dst->Sym(), ctx.dst->ty.Of(num_workgroups_struct),
|
ctx.dst->Sym(), ctx.dst->ty.Of(num_workgroups_struct),
|
||||||
ast::StorageClass::kUniform,
|
ast::StorageClass::kUniform,
|
||||||
|
@ -30,7 +30,6 @@ namespace transform {
|
|||||||
///
|
///
|
||||||
/// The generated uniform buffer will have the form:
|
/// The generated uniform buffer will have the form:
|
||||||
/// ```
|
/// ```
|
||||||
/// [[block]]
|
|
||||||
/// struct num_workgroups_struct {
|
/// struct num_workgroups_struct {
|
||||||
/// num_workgroups : vec3<u32>;
|
/// num_workgroups : vec3<u32>;
|
||||||
/// };
|
/// };
|
||||||
|
@ -66,7 +66,6 @@ fn main([[builtin(num_workgroups)]] num_wgs : vec3<u32>) {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol_2 {
|
struct tint_symbol_2 {
|
||||||
num_workgroups : vec3<u32>;
|
num_workgroups : vec3<u32>;
|
||||||
};
|
};
|
||||||
@ -109,7 +108,6 @@ fn main(in : Builtins) {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol_2 {
|
struct tint_symbol_2 {
|
||||||
num_workgroups : vec3<u32>;
|
num_workgroups : vec3<u32>;
|
||||||
};
|
};
|
||||||
@ -158,7 +156,6 @@ fn main(in : Builtins) {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol_2 {
|
struct tint_symbol_2 {
|
||||||
num_workgroups : vec3<u32>;
|
num_workgroups : vec3<u32>;
|
||||||
};
|
};
|
||||||
@ -234,7 +231,6 @@ fn main3([[builtin(num_workgroups)]] num_wgs : vec3<u32>) {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct tint_symbol_6 {
|
struct tint_symbol_6 {
|
||||||
num_workgroups : vec3<u32>;
|
num_workgroups : vec3<u32>;
|
||||||
};
|
};
|
||||||
|
@ -64,7 +64,6 @@ var<private> arr : array<tint_padded_array_element, 4u>;
|
|||||||
|
|
||||||
TEST_F(PadArrayElementsTest, RuntimeArray) {
|
TEST_F(PadArrayElementsTest, RuntimeArray) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
rta : [[stride(8)]] array<i32>;
|
rta : [[stride(8)]] array<i32>;
|
||||||
};
|
};
|
||||||
@ -75,7 +74,6 @@ struct tint_padded_array_element {
|
|||||||
el : i32;
|
el : i32;
|
||||||
};
|
};
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
rta : array<tint_padded_array_element>;
|
rta : array<tint_padded_array_element>;
|
||||||
};
|
};
|
||||||
|
@ -173,7 +173,6 @@ fn f() {
|
|||||||
|
|
||||||
TEST_F(RemovePhoniesTest, ForLoop) {
|
TEST_F(RemovePhoniesTest, ForLoop) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
};
|
};
|
||||||
@ -203,7 +202,6 @@ fn f() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
arr : array<i32>;
|
arr : array<i32>;
|
||||||
};
|
};
|
||||||
|
@ -174,7 +174,6 @@ fn f() {
|
|||||||
// 0xffffffff. If WGSL supports 64-bit indexing, re-enable this test.
|
// 0xffffffff. If WGSL supports 64-bit indexing, re-enable this test.
|
||||||
TEST_F(RobustnessTest, DISABLED_LargeArrays_Idx) {
|
TEST_F(RobustnessTest, DISABLED_LargeArrays_Idx) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : array<f32, 0x7fffffff>;
|
a : array<f32, 0x7fffffff>;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -213,7 +212,6 @@ fn f() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : array<f32, 2147483647>;
|
a : array<f32, 2147483647>;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -617,7 +615,6 @@ TEST_F(RobustnessTest, DISABLED_Matrix_Row_Constant_Id_Clamps) {
|
|||||||
|
|
||||||
TEST_F(RobustnessTest, RuntimeArray_Clamps) {
|
TEST_F(RobustnessTest, RuntimeArray_Clamps) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -630,7 +627,6 @@ fn f() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -778,7 +774,6 @@ TEST_F(RobustnessTest, DISABLED_Shadowed_Variable) {
|
|||||||
// Check that existing use of min() and arrayLength() do not get renamed.
|
// Check that existing use of min() and arrayLength() do not get renamed.
|
||||||
TEST_F(RobustnessTest, DontRenameSymbols) {
|
TEST_F(RobustnessTest, DontRenameSymbols) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -796,7 +791,6 @@ fn f() {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : f32;
|
a : f32;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -819,7 +813,6 @@ fn f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const char* kOmitSourceShader = R"(
|
const char* kOmitSourceShader = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : array<f32, 4>;
|
a : array<f32, 4>;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -827,7 +820,7 @@ struct S {
|
|||||||
[[group(0), binding(0)]] var<storage, read> s : S;
|
[[group(0), binding(0)]] var<storage, read> s : S;
|
||||||
|
|
||||||
type UArr = [[stride(16)]] array<f32, 4>;
|
type UArr = [[stride(16)]] array<f32, 4>;
|
||||||
[[block]] struct U {
|
struct U {
|
||||||
a : UArr;
|
a : UArr;
|
||||||
};
|
};
|
||||||
[[group(1), binding(0)]] var<uniform> u : U;
|
[[group(1), binding(0)]] var<uniform> u : U;
|
||||||
@ -878,7 +871,6 @@ fn f() {
|
|||||||
|
|
||||||
TEST_F(RobustnessTest, OmitNone) {
|
TEST_F(RobustnessTest, OmitNone) {
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : array<f32, 4>;
|
a : array<f32, 4>;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -888,7 +880,6 @@ struct S {
|
|||||||
|
|
||||||
type UArr = [[stride(16)]] array<f32, 4>;
|
type UArr = [[stride(16)]] array<f32, 4>;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct U {
|
struct U {
|
||||||
a : UArr;
|
a : UArr;
|
||||||
};
|
};
|
||||||
@ -943,7 +934,6 @@ fn f() {
|
|||||||
|
|
||||||
TEST_F(RobustnessTest, OmitStorage) {
|
TEST_F(RobustnessTest, OmitStorage) {
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : array<f32, 4>;
|
a : array<f32, 4>;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -953,7 +943,6 @@ struct S {
|
|||||||
|
|
||||||
type UArr = [[stride(16)]] array<f32, 4>;
|
type UArr = [[stride(16)]] array<f32, 4>;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct U {
|
struct U {
|
||||||
a : UArr;
|
a : UArr;
|
||||||
};
|
};
|
||||||
@ -1010,7 +999,6 @@ fn f() {
|
|||||||
|
|
||||||
TEST_F(RobustnessTest, OmitUniform) {
|
TEST_F(RobustnessTest, OmitUniform) {
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : array<f32, 4>;
|
a : array<f32, 4>;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -1020,7 +1008,6 @@ struct S {
|
|||||||
|
|
||||||
type UArr = [[stride(16)]] array<f32, 4>;
|
type UArr = [[stride(16)]] array<f32, 4>;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct U {
|
struct U {
|
||||||
a : UArr;
|
a : UArr;
|
||||||
};
|
};
|
||||||
@ -1077,7 +1064,6 @@ fn f() {
|
|||||||
|
|
||||||
TEST_F(RobustnessTest, OmitBoth) {
|
TEST_F(RobustnessTest, OmitBoth) {
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct S {
|
struct S {
|
||||||
a : array<f32, 4>;
|
a : array<f32, 4>;
|
||||||
b : array<f32>;
|
b : array<f32>;
|
||||||
@ -1087,7 +1073,6 @@ struct S {
|
|||||||
|
|
||||||
type UArr = [[stride(16)]] array<f32, 4>;
|
type UArr = [[stride(16)]] array<f32, 4>;
|
||||||
|
|
||||||
[[block]]
|
|
||||||
struct U {
|
struct U {
|
||||||
a : UArr;
|
a : UArr;
|
||||||
};
|
};
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
#include "src/ast/assignment_statement.h"
|
#include "src/ast/assignment_statement.h"
|
||||||
#include "src/ast/bitcast_expression.h"
|
#include "src/ast/bitcast_expression.h"
|
||||||
#include "src/ast/struct_block_decoration.h"
|
|
||||||
#include "src/ast/variable_decl_statement.h"
|
#include "src/ast/variable_decl_statement.h"
|
||||||
#include "src/program_builder.h"
|
#include "src/program_builder.h"
|
||||||
#include "src/sem/variable.h"
|
#include "src/sem/variable.h"
|
||||||
@ -260,9 +259,6 @@ struct State {
|
|||||||
{
|
{
|
||||||
ctx.dst->Member(GetStructBufferName(),
|
ctx.dst->Member(GetStructBufferName(),
|
||||||
ctx.dst->ty.array<ProgramBuilder::u32>(4)),
|
ctx.dst->ty.array<ProgramBuilder::u32>(4)),
|
||||||
},
|
|
||||||
{
|
|
||||||
ctx.dst->create<ast::StructBlockDecoration>(),
|
|
||||||
});
|
});
|
||||||
for (uint32_t i = 0; i < cfg.vertex_state.size(); ++i) {
|
for (uint32_t i = 0; i < cfg.vertex_state.size(); ++i) {
|
||||||
// The decorated variable with struct type
|
// The decorated variable with struct type
|
||||||
|
@ -107,7 +107,6 @@ fn main() -> [[builtin(position)]] vec4<f32> {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -137,7 +136,6 @@ fn main([[location(0)]] var_a : f32) -> [[builtin(position)]] vec4<f32> {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -176,7 +174,6 @@ fn main([[location(0)]] var_a : f32) -> [[builtin(position)]] vec4<f32> {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -215,7 +212,6 @@ fn main([[location(0)]] var_a : f32) -> [[builtin(position)]] vec4<f32> {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -259,7 +255,6 @@ fn main(inputs : Inputs) -> [[builtin(position)]] vec4<f32> {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -308,7 +303,6 @@ fn main([[location(0)]] var_a : f32,
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -369,7 +363,6 @@ fn main(inputs : Inputs) -> [[builtin(position)]] vec4<f32> {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -452,7 +445,6 @@ fn main(inputs : Inputs, indices : Indices) -> [[builtin(position)]] vec4<f32> {
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -520,7 +512,6 @@ fn main([[location(0)]] var_a : f32,
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -566,7 +557,6 @@ fn main([[location(0)]] var_a : vec2<f32>,
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -623,7 +613,6 @@ fn main([[location(0)]] var_a : f32,
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data_1 : [[stride(4)]] array<u32>;
|
tint_vertex_data_1 : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -701,7 +690,6 @@ fn main(
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -862,7 +850,6 @@ fn main(
|
|||||||
|
|
||||||
auto* expect =
|
auto* expect =
|
||||||
R"(
|
R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
@ -1022,7 +1009,6 @@ fn main(
|
|||||||
)";
|
)";
|
||||||
|
|
||||||
auto* expect = R"(
|
auto* expect = R"(
|
||||||
[[block]]
|
|
||||||
struct TintVertexData {
|
struct TintVertexData {
|
||||||
tint_vertex_data : [[stride(4)]] array<u32>;
|
tint_vertex_data : [[stride(4)]] array<u32>;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user