File: required-alignment.wgsl

package info (click to toggle)
webkit2gtk 2.48.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 429,764 kB
  • sloc: cpp: 3,697,587; javascript: 194,444; ansic: 169,997; python: 46,499; asm: 19,295; ruby: 18,528; perl: 16,602; xml: 4,650; yacc: 2,360; sh: 2,098; java: 1,993; lex: 1,327; pascal: 366; makefile: 298
file content (31 lines) | stat: -rw-r--r-- 764 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// RUN: %not %wgslc | %check

struct S1 {
    x1: i32,

    // CHECK-L: arrays in the uniform address space must have a stride multiple of 16 bytes, but has a stride of 4 bytes
    // CHECK-L: offset of struct member S1::y1 must be a multiple of 16 bytes, but its offset is 4 bytes
    @align(4) y1: array<i32, 2>,

    @align(16) x2: i32,

    x3: i32,

    // CHECK-L: offset of struct member S1::y3 must be a multiple of 16 bytes, but its offset is 24 bytes
    y3: T,

    // CHECK-L: uniform address space requires that the number of bytes between S1::y3 and S1::z3 must be at least 16 bytes, but it is 8 bytes
    z3: i32,
}

struct T {
    x: i32,
    y: i32,
};

struct U {
    x: i32,
    @align(32) y: i32,
};

@group(0) @binding(1) var<uniform> x1: S1;