dawn-cmake/test/tint/bug/chromium
James Price 4d3af66bbd tint/msl: Preserve trailing vec3 padding
In order to preserve padding properly for MSL, we need to use its
packed_vec type for all vec3 types in storage buffers, not just struct
members. This commit includes a complete rewrite of the PackedVec3
transform to achieve this. The key details are:

* An internal `__packed_vec3<>` type was added, which corresponds to a
  `type::Vector` with an additional flag to indicate that it will be
  emitted as packed vector.

* The `PackedVec3` transform replaces all vec3 types used in
  host-shareable address spaces with the internal `__packed_vec3`
  type. This includes vec3 types that appear as the store type of a
  pointer.

* When used as an array element, these `__packed_vec3` types are
  wrapped in a struct that contains a single `__packed_vec3`
  member. This allows us to add an `@align()` attribute that ensures
  that `array<vec3<T>>` still has the correct array element stride.

* When the `vec3<T>` appears as a struct member in the input program,
  we apply the `@align()` to that member to ensure that we do not
  change its offset.

* Matrix types with three rows that are used in memory are replaced
  with an array of columns, where each column uses a `__packed_vec3`
  inside an aligned wrapper structure as above.

* Accesses to host-shareable memory that involve any of these types
  invoke a "pack" or "unpack" helper function to convert them to the
  equivalent type that uses `__packed_vec3` or a regular `vec3` as
  required.

* The `chromium_internal_relaxed_uniform_layout` extension is used to
  avoid issues where modifying a type in the uniform address space
  triggers stricter layout validation rules.

Bug: tint:1571
Fixed: tint:1837
Change-Id: Idaf2da2f5bcb2be00c85ec657edfb614186476bb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/121200
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2023-02-27 20:21:03 +00:00
..
1221120.wgsl tint: Deprecated module-scope 'let' for 'const' 2022-06-29 00:55:36 +00:00
1221120.wgsl.expected.dxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1221120.wgsl.expected.fxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1221120.wgsl.expected.glsl tint: Deprecated module-scope 'let' for 'const' 2022-06-29 00:55:36 +00:00
1221120.wgsl.expected.msl tint: Deprecated module-scope 'let' for 'const' 2022-06-29 00:55:36 +00:00
1221120.wgsl.expected.spvasm tint: Deprecated module-scope 'let' for 'const' 2022-06-29 00:55:36 +00:00
1221120.wgsl.expected.wgsl tint: Deprecated module-scope 'let' for 'const' 2022-06-29 00:55:36 +00:00
1236161.wgsl tint->dawn: Shuffle source tree in preperation of merging repos 2022-02-21 15:19:07 +00:00
1236161.wgsl.expected.dxc.hlsl tint: Implement const-eval of modf 2022-11-23 00:05:05 +00:00
1236161.wgsl.expected.fxc.hlsl tint: Implement const-eval of modf 2022-11-23 00:05:05 +00:00
1236161.wgsl.expected.glsl tint: Implement const-eval of modf 2022-11-23 00:05:05 +00:00
1236161.wgsl.expected.msl tint: Implement const-eval of modf 2022-11-23 00:05:05 +00:00
1236161.wgsl.expected.spvasm tint: Implement const-eval of modf 2022-11-23 00:05:05 +00:00
1236161.wgsl.expected.wgsl tint->dawn: Shuffle source tree in preperation of merging repos 2022-02-21 15:19:07 +00:00
1251009.wgsl Update src/tint unittests to new @stage format. 2022-06-07 13:55:34 +00:00
1251009.wgsl.expected.dxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1251009.wgsl.expected.fxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1251009.wgsl.expected.glsl tint/writer/glsl: Inline constant expressions 2022-06-01 01:11:59 +00:00
1251009.wgsl.expected.msl tint/writer/msl: Inline constant expressions 2022-06-01 10:08:29 +00:00
1251009.wgsl.expected.spvasm tint->dawn: Shuffle source tree in preperation of merging repos 2022-02-21 15:19:07 +00:00
1251009.wgsl.expected.wgsl Update src/tint unittests to new @stage format. 2022-06-07 13:55:34 +00:00
1273230.wgsl Update src/tint unittests to new @stage format. 2022-06-07 13:55:34 +00:00
1273230.wgsl.expected.dxc.hlsl tint/transform: Inline HLSL uniform / storage buffers 2023-02-24 17:16:55 +00:00
1273230.wgsl.expected.fxc.hlsl tint/transform: Inline HLSL uniform / storage buffers 2023-02-24 17:16:55 +00:00
1273230.wgsl.expected.glsl Tint/transform: make AddBlockAttribute always do wrapping if possible 2022-11-02 02:25:38 +00:00
1273230.wgsl.expected.msl tint/msl: Preserve trailing vec3 padding 2023-02-27 20:21:03 +00:00
1273230.wgsl.expected.spvasm tint/transform: Fix ICE when combining polyfills 2022-11-21 17:11:05 +00:00
1273230.wgsl.expected.wgsl Update src/tint unittests to new @stage format. 2022-06-07 13:55:34 +00:00
1273451.wgsl wgsl: Separate struct members with commas 2022-03-28 14:31:22 +00:00
1273451.wgsl.expected.dxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1273451.wgsl.expected.fxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1273451.wgsl.expected.glsl tint->dawn: Shuffle source tree in preperation of merging repos 2022-02-21 15:19:07 +00:00
1273451.wgsl.expected.msl When emitting a MSL struct initializer emit the struct name. 2022-08-11 02:28:01 +00:00
1273451.wgsl.expected.spvasm tint->dawn: Shuffle source tree in preperation of merging repos 2022-02-21 15:19:07 +00:00
1273451.wgsl.expected.wgsl wgsl: Separate struct members with commas 2022-03-28 14:31:22 +00:00
1290107.wgsl Update src/tint unittests to new @stage format. 2022-06-07 13:55:34 +00:00
1290107.wgsl.expected.dxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1290107.wgsl.expected.fxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1290107.wgsl.expected.glsl GLSL: Change Add[Spirv]BlockAttribute to support GLSL 2022-09-02 19:19:10 +00:00
1290107.wgsl.expected.msl tint/writer/msl: Generate an array<T,N> helper 2022-06-24 17:01:59 +00:00
1290107.wgsl.expected.spvasm tint->dawn: Shuffle source tree in preperation of merging repos 2022-02-21 15:19:07 +00:00
1290107.wgsl.expected.wgsl Update src/tint unittests to new @stage format. 2022-06-07 13:55:34 +00:00
1341475.wgsl tint: transform::RemovePhonies: skip builtins with no side effects 2022-08-01 17:21:54 +00:00
1341475.wgsl.expected.dxc.hlsl tint: const eval of mix builtin 2022-12-12 15:31:21 +00:00
1341475.wgsl.expected.fxc.hlsl tint: const eval of mix builtin 2022-12-12 15:31:21 +00:00
1341475.wgsl.expected.glsl tint: const eval of mix builtin 2022-12-12 15:31:21 +00:00
1341475.wgsl.expected.msl tint: const eval of mix builtin 2022-12-12 15:31:21 +00:00
1341475.wgsl.expected.spvasm tint: const eval of mix builtin 2022-12-12 15:31:21 +00:00
1341475.wgsl.expected.wgsl tint: transform::RemovePhonies: skip builtins with no side effects 2022-08-01 17:21:54 +00:00
1343242.wgsl tint: Implement const eval of unary complement 2022-07-15 23:54:10 +00:00
1343242.wgsl.expected.dxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1343242.wgsl.expected.fxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1343242.wgsl.expected.glsl tint: Implement const eval of unary complement 2022-07-15 23:54:10 +00:00
1343242.wgsl.expected.msl tint: Implement const eval of unary complement 2022-07-15 23:54:10 +00:00
1343242.wgsl.expected.spvasm tint: Implement const eval of unary complement 2022-07-15 23:54:10 +00:00
1343242.wgsl.expected.wgsl tint: Implement const eval of unary complement 2022-07-15 23:54:10 +00:00
1345468.wgsl tint/resolver: Materialize objects when indexed with non-const index 2022-07-21 15:25:35 +00:00
1345468.wgsl.expected.dxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1345468.wgsl.expected.fxc.hlsl tint/test-runner: Split expectations for FXC and DXC 2022-07-22 17:43:27 +00:00
1345468.wgsl.expected.glsl tint/resolver: Materialize objects when indexed with non-const index 2022-07-21 15:25:35 +00:00
1345468.wgsl.expected.msl tint/resolver: Materialize objects when indexed with non-const index 2022-07-21 15:25:35 +00:00
1345468.wgsl.expected.spvasm tint/resolver: Materialize objects when indexed with non-const index 2022-07-21 15:25:35 +00:00
1345468.wgsl.expected.wgsl tint/resolver: Materialize objects when indexed with non-const index 2022-07-21 15:25:35 +00:00
1350147.wgsl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1350147.wgsl.expected.dxc.hlsl tint: fix builtin calls and binary ops with abstract args of different type 2022-08-10 20:01:17 +00:00
1350147.wgsl.expected.fxc.hlsl tint: fix builtin calls and binary ops with abstract args of different type 2022-08-10 20:01:17 +00:00
1350147.wgsl.expected.glsl tint: fix builtin calls and binary ops with abstract args of different type 2022-08-10 20:01:17 +00:00
1350147.wgsl.expected.msl tint: fix builtin calls and binary ops with abstract args of different type 2022-08-10 20:01:17 +00:00
1350147.wgsl.expected.spvasm tint: fix builtin calls and binary ops with abstract args of different type 2022-08-10 20:01:17 +00:00
1350147.wgsl.expected.wgsl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1360925.wgsl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1360925.wgsl.expected.dxc.hlsl tint: Fix transform errors when calling arrayLength() as a statement 2022-09-09 20:42:29 +00:00
1360925.wgsl.expected.fxc.hlsl tint: Fix transform errors when calling arrayLength() as a statement 2022-09-09 20:42:29 +00:00
1360925.wgsl.expected.glsl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1360925.wgsl.expected.msl tint: Fix transform errors when calling arrayLength() as a statement 2022-09-09 20:42:29 +00:00
1360925.wgsl.expected.spvasm tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1360925.wgsl.expected.wgsl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1367602_function_space_initializer_valid_count.wgsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_initializer_valid_count.wgsl.expected.dxc.hlsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_initializer_valid_count.wgsl.expected.fxc.hlsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_initializer_valid_count.wgsl.expected.glsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_initializer_valid_count.wgsl.expected.msl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_initializer_valid_count.wgsl.expected.spvasm Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_initializer_valid_count.wgsl.expected.wgsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_no_initializer_valid_count.wgsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_no_initializer_valid_count.wgsl.expected.dxc.hlsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_no_initializer_valid_count.wgsl.expected.fxc.hlsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_no_initializer_valid_count.wgsl.expected.glsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_no_initializer_valid_count.wgsl.expected.msl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_no_initializer_valid_count.wgsl.expected.spvasm Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_function_space_no_initializer_valid_count.wgsl.expected.wgsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_initializer_valid_count.wgsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_initializer_valid_count.wgsl.expected.dxc.hlsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_initializer_valid_count.wgsl.expected.fxc.hlsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_initializer_valid_count.wgsl.expected.glsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_initializer_valid_count.wgsl.expected.msl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_initializer_valid_count.wgsl.expected.spvasm Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_initializer_valid_count.wgsl.expected.wgsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_no_initializer_valid_count.wgsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_no_initializer_valid_count.wgsl.expected.dxc.hlsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_no_initializer_valid_count.wgsl.expected.fxc.hlsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_no_initializer_valid_count.wgsl.expected.glsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_no_initializer_valid_count.wgsl.expected.msl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_no_initializer_valid_count.wgsl.expected.spvasm Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_private_space_no_initializer_valid_count.wgsl.expected.wgsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_storage_space.wgsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_storage_space.wgsl.expected.dxc.hlsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_storage_space.wgsl.expected.fxc.hlsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_storage_space.wgsl.expected.glsl Tint/transform: make AddBlockAttribute always do wrapping if possible 2022-11-02 02:25:38 +00:00
1367602_storage_space.wgsl.expected.msl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1367602_storage_space.wgsl.expected.spvasm Tint/transform: make AddBlockAttribute always do wrapping if possible 2022-11-02 02:25:38 +00:00
1367602_storage_space.wgsl.expected.wgsl Tint/E2E: Fix testcases for bug/chromium/1367602 2022-10-14 02:50:38 +00:00
1372963.wgsl tint: Fix C++ UB when shifting abstract 0 left by >= 64 2022-10-18 20:17:55 +00:00
1372963.wgsl.expected.dxc.hlsl tint: Fix C++ UB when shifting abstract 0 left by >= 64 2022-10-18 20:17:55 +00:00
1372963.wgsl.expected.fxc.hlsl tint: Fix C++ UB when shifting abstract 0 left by >= 64 2022-10-18 20:17:55 +00:00
1372963.wgsl.expected.glsl tint: Fix C++ UB when shifting abstract 0 left by >= 64 2022-10-18 20:17:55 +00:00
1372963.wgsl.expected.msl tint: Fix C++ UB when shifting abstract 0 left by >= 64 2022-10-18 20:17:55 +00:00
1372963.wgsl.expected.spvasm tint: Fix C++ UB when shifting abstract 0 left by >= 64 2022-10-18 20:17:55 +00:00
1372963.wgsl.expected.wgsl Update lexer to not include `-` in numbers. 2022-10-26 15:20:47 +00:00
1381883.wgsl tint/resolver: Resolve dependencies of parameter attributes 2022-11-07 13:15:21 +00:00
1381883.wgsl.expected.dxc.hlsl tint/resolver: Resolve dependencies of parameter attributes 2022-11-07 13:15:21 +00:00
1381883.wgsl.expected.fxc.hlsl tint/resolver: Resolve dependencies of parameter attributes 2022-11-07 13:15:21 +00:00
1381883.wgsl.expected.glsl tint/resolver: Resolve dependencies of parameter attributes 2022-11-07 13:15:21 +00:00
1381883.wgsl.expected.msl tint/resolver: Resolve dependencies of parameter attributes 2022-11-07 13:15:21 +00:00
1381883.wgsl.expected.spvasm tint/resolver: Resolve dependencies of parameter attributes 2022-11-07 13:15:21 +00:00
1381883.wgsl.expected.wgsl tint/resolver: Resolve dependencies of parameter attributes 2022-11-07 13:15:21 +00:00
1383755.wgsl tint/resolver: Fix bad pointer deref (UAF) 2022-11-13 18:26:25 +00:00
1383755.wgsl.expected.dxc.hlsl tint/resolver: Fix bad pointer deref (UAF) 2022-11-13 18:26:25 +00:00
1383755.wgsl.expected.fxc.hlsl tint/resolver: Fix bad pointer deref (UAF) 2022-11-13 18:26:25 +00:00
1383755.wgsl.expected.glsl tint/resolver: Fix bad pointer deref (UAF) 2022-11-13 18:26:25 +00:00
1383755.wgsl.expected.msl tint/resolver: Fix bad pointer deref (UAF) 2022-11-13 18:26:25 +00:00
1383755.wgsl.expected.spvasm tint/resolver: Fix bad pointer deref (UAF) 2022-11-13 18:26:25 +00:00
1383755.wgsl.expected.wgsl tint/resolver: Fix bad pointer deref (UAF) 2022-11-13 18:26:25 +00:00
1386647.wgsl tint/transform: Fix ICE when combining polyfills 2022-11-21 17:11:05 +00:00
1386647.wgsl.expected.dxc.hlsl tint/transform: Fix ICE when combining polyfills 2022-11-21 17:11:05 +00:00
1386647.wgsl.expected.fxc.hlsl tint/transform: Fix ICE when combining polyfills 2022-11-21 17:11:05 +00:00
1386647.wgsl.expected.glsl tint/transform: Fix ICE when combining polyfills 2022-11-21 17:11:05 +00:00
1386647.wgsl.expected.msl tint/transform: Fix ICE when combining polyfills 2022-11-21 17:11:05 +00:00
1386647.wgsl.expected.spvasm tint/transform: Fix ICE when combining polyfills 2022-11-21 17:11:05 +00:00
1386647.wgsl.expected.wgsl tint/transform: Fix ICE when combining polyfills 2022-11-21 17:11:05 +00:00
1395241.wgsl tint: fix signed overflow in const eval modulo 2022-12-05 17:16:15 +00:00
1395241.wgsl.expected.dxc.hlsl tint: fix signed overflow in const eval modulo 2022-12-05 17:16:15 +00:00
1395241.wgsl.expected.fxc.hlsl tint: fix signed overflow in const eval modulo 2022-12-05 17:16:15 +00:00
1395241.wgsl.expected.glsl tint: fix signed overflow in const eval modulo 2022-12-05 17:16:15 +00:00
1395241.wgsl.expected.msl tint: fix signed overflow in const eval modulo 2022-12-05 17:16:15 +00:00
1395241.wgsl.expected.spvasm tint: fix signed overflow in const eval modulo 2022-12-05 17:16:15 +00:00
1395241.wgsl.expected.wgsl tint/tests: Actually validate the generated WGSL 2023-01-27 16:33:30 +00:00
1403752.wgsl tint: fix const eval short-circuiting with mixed runtime and constant expressions 2023-01-04 12:30:47 +00:00
1403752.wgsl.expected.dxc.hlsl tint: fix const eval short-circuiting with mixed runtime and constant expressions 2023-01-04 12:30:47 +00:00
1403752.wgsl.expected.fxc.hlsl tint: fix const eval short-circuiting with mixed runtime and constant expressions 2023-01-04 12:30:47 +00:00
1403752.wgsl.expected.glsl tint: fix const eval short-circuiting with mixed runtime and constant expressions 2023-01-04 12:30:47 +00:00
1403752.wgsl.expected.msl tint: fix const eval short-circuiting with mixed runtime and constant expressions 2023-01-04 12:30:47 +00:00
1403752.wgsl.expected.spvasm tint: fix const eval short-circuiting with mixed runtime and constant expressions 2023-01-04 12:30:47 +00:00
1403752.wgsl.expected.wgsl tint: fix const eval short-circuiting with mixed runtime and constant expressions 2023-01-04 12:30:47 +00:00
1405676.wgsl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1405676.wgsl.expected.dxc.hlsl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1405676.wgsl.expected.fxc.hlsl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1405676.wgsl.expected.glsl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1405676.wgsl.expected.msl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1405676.wgsl.expected.spvasm tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00
1405676.wgsl.expected.wgsl tint: Validate @must_use on functions and builtins 2023-02-22 16:18:22 +00:00