dawn-cmake/test/tint
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
..
access tint/msl: Preserve trailing vec3 padding 2023-02-27 20:21:03 +00:00
array tint/reader/wgsl: Remove element_count_expression() 2023-02-24 21:02:40 +00:00
benchmark Update GLSL test results. 2022-12-15 16:42:28 +00:00
buffer tint/msl: Preserve trailing vec3 padding 2023-02-27 20:21:03 +00:00
bug tint/msl: Preserve trailing vec3 padding 2023-02-27 20:21:03 +00:00
builtins tint/msl: Preserve trailing vec3 padding 2023-02-27 20:21:03 +00:00
const tint: Rename 'type' to 'alias' 2023-01-24 14:55:17 +00:00
diagnostic_filtering tint/reader/wgsl: Remove type keywords 2023-02-18 08:36:01 +00:00
expressions tint/msl: Preserve trailing vec3 padding 2023-02-27 20:21:03 +00:00
extensions/parsing wgsl: Print abstract-floats with full precision. 2022-10-12 19:13:38 +00:00
identifiers/underscore tint: Rename 'type' to 'alias' 2023-01-24 14:55:17 +00:00
layout/storage/mat2x2 tint/transform: Inline HLSL uniform / storage buffers 2023-02-24 17:16:55 +00:00
let/inferred tint: Rename 'type' to 'alias' 2023-01-24 14:55:17 +00:00
loops tint: Use MergeReturn transform in SPIR-V backend 2022-10-31 15:41:41 +00:00
out_of_order_decls tint: Rename 'type' to 'alias' 2023-01-24 14:55:17 +00:00
ptr_ref tint/transform: Inline HLSL uniform / storage buffers 2023-02-24 17:16:55 +00:00
samples tint/msl: Preserve trailing vec3 padding 2023-02-27 20:21:03 +00:00
shader_io tint/msl: Preserve trailing vec3 padding 2023-02-27 20:21:03 +00:00
shadowing tint/transform: Simplify Renamer transform 2023-02-09 15:35:27 +00:00
statements tint/transform: Inline HLSL uniform / storage buffers 2023-02-24 17:16:55 +00:00
struct tint/transform: fix PromoteInitializersToLet for constant expressions 2022-12-09 12:34:36 +00:00
types Enable the 1D -> 2D texture transform in GLSL writer. 2023-01-07 17:19:21 +00:00
unicode tint: Rename 'type' to 'alias' 2023-01-24 14:55:17 +00:00
unittest/reader/spirv tint/test: Remove SPIR-V test that is now invalid 2023-02-06 21:50:58 +00:00
var tint: Rename 'type' to 'alias' 2023-01-24 14:55:17 +00:00
vk-gl-cts tint: Resolve @builtin() args as expressions 2023-02-21 17:33:54 +00:00
extract-spvasm.py tint->dawn: Shuffle source tree in preperation of merging repos 2022-02-21 15:19:07 +00:00
parse_hlsl_errors.py tint: add parse_hlsl_errors.py to help triage hlsl errors 2022-10-04 19:48:41 +00:00
test-all.sh tools: Replace copy-pasta scripts 2022-04-07 18:26:45 +00:00