@@ -30,7 +30,7 @@ macro_rules! write_layout {
3030}
3131
3232/// gid is checked between `0..LAYOUT_COUNT`
33- pub const LAYOUT_COUNT : usize = 0x40 ;
33+ pub const LAYOUT_COUNT : usize = 0x60 ;
3434/// at byte offset 0x100 * N starts layout N
3535pub const LAYOUT_MAX_SIZE : usize = 0x100 / 0x4 ;
3636pub const LAYOUT_LEN : usize = LAYOUT_COUNT * LAYOUT_MAX_SIZE ;
@@ -52,10 +52,74 @@ pub fn eval_layouts(gid: u32, out: &mut [u32]) {
5252 0xC => write_layout ! ( out, offset, UVec4 ( x, y, z, w) ) ,
5353 0xD => write_layout ! ( out, offset, IVec4 ( x, y, z, w) ) ,
5454 0xE => write_layout ! ( out, offset, Vec4 ( ) ) , // private members
55+ 0xF => write_layout ! ( out, offset, Quat ( ) ) , // private members
5556
5657 // experiments structs
5758 0x10 => write_layout ! ( out, offset, Struct0x10 ( a, b) ) ,
5859 0x11 => write_layout ! ( out, offset, Struct0x11 ( a, b) ) ,
60+ 0x12 => write_layout ! ( out, offset, Struct0x12 ( a, b, c, d, e) ) ,
61+ 0x13 => write_layout ! ( out, offset, Struct0x13 ( a) ) ,
62+
63+ // mat
64+ 0x20 => write_layout ! ( out, offset, Mat2 ( ) ) , // private members
65+ 0x21 => write_layout ! ( out, offset, Mat3 ( x_axis, y_axis, z_axis) ) ,
66+ 0x22 => write_layout ! ( out, offset, Mat3A ( x_axis, y_axis, z_axis) ) ,
67+ 0x23 => write_layout ! ( out, offset, Mat4 ( x_axis, y_axis, z_axis, w_axis) ) ,
68+ // f64
69+ 0x24 => write_layout ! ( out, offset, f64 ( ) ) ,
70+ 0x25 => write_layout ! ( out, offset, DVec2 ( x, y) ) ,
71+ 0x26 => write_layout ! ( out, offset, DVec3 ( x, y, z) ) ,
72+ 0x27 => write_layout ! ( out, offset, DVec4 ( x, y, z, w) ) ,
73+ 0x28 => write_layout ! ( out, offset, DQuat ( x, y, z, w) ) ,
74+ 0x29 => write_layout ! ( out, offset, DMat2 ( ) ) , // private members
75+ 0x2a => write_layout ! ( out, offset, DMat3 ( x_axis, y_axis, z_axis) ) ,
76+ 0x2b => write_layout ! ( out, offset, DMat4 ( x_axis, y_axis, z_axis, w_axis) ) ,
77+
78+ // i8
79+ 0x30 => write_layout ! ( out, offset, i8 ( ) ) ,
80+ 0x31 => write_layout ! ( out, offset, I8Vec2 ( x, y) ) ,
81+ 0x32 => write_layout ! ( out, offset, I8Vec3 ( x, y, z) ) ,
82+ 0x33 => write_layout ! ( out, offset, I8Vec4 ( x, y, z, w) ) ,
83+ // i16
84+ 0x34 => write_layout ! ( out, offset, i16 ( ) ) ,
85+ 0x35 => write_layout ! ( out, offset, I16Vec2 ( x, y) ) ,
86+ 0x36 => write_layout ! ( out, offset, I16Vec3 ( x, y, z) ) ,
87+ 0x37 => write_layout ! ( out, offset, I16Vec4 ( x, y, z, w) ) ,
88+ // i64
89+ 0x38 => write_layout ! ( out, offset, i64 ( ) ) ,
90+ 0x39 => write_layout ! ( out, offset, I64Vec2 ( x, y) ) ,
91+ 0x3a => write_layout ! ( out, offset, I64Vec3 ( x, y, z) ) ,
92+ 0x3b => write_layout ! ( out, offset, I64Vec4 ( x, y, z, w) ) ,
93+
94+ // u8
95+ 0x40 => write_layout ! ( out, offset, u8 ( ) ) ,
96+ 0x41 => write_layout ! ( out, offset, U8Vec2 ( x, y) ) ,
97+ 0x42 => write_layout ! ( out, offset, U8Vec3 ( x, y, z) ) ,
98+ 0x43 => write_layout ! ( out, offset, U8Vec4 ( x, y, z, w) ) ,
99+ // u16
100+ 0x44 => write_layout ! ( out, offset, u16 ( ) ) ,
101+ 0x45 => write_layout ! ( out, offset, U16Vec2 ( x, y) ) ,
102+ 0x46 => write_layout ! ( out, offset, U16Vec3 ( x, y, z) ) ,
103+ 0x47 => write_layout ! ( out, offset, U16Vec4 ( x, y, z, w) ) ,
104+ // u64
105+ 0x48 => write_layout ! ( out, offset, u64 ( ) ) ,
106+ 0x49 => write_layout ! ( out, offset, U64Vec2 ( x, y) ) ,
107+ 0x4a => write_layout ! ( out, offset, U64Vec3 ( x, y, z) ) ,
108+ 0x4b => write_layout ! ( out, offset, U64Vec4 ( x, y, z, w) ) ,
109+ // Affine
110+ 0x4c => write_layout ! ( out, offset, Affine2 ( matrix2, translation) ) ,
111+ 0x4d => write_layout ! ( out, offset, Affine3A ( matrix3, translation) ) ,
112+ 0x4e => write_layout ! ( out, offset, DAffine2 ( matrix2, translation) ) ,
113+ 0x4f => write_layout ! ( out, offset, DAffine3 ( matrix3, translation) ) ,
114+
115+ // bool
116+ 0x50 => write_layout ! ( out, offset, bool ( ) ) ,
117+ 0x51 => write_layout ! ( out, offset, BVec2 ( x, y) ) ,
118+ 0x52 => write_layout ! ( out, offset, BVec3 ( x, y, z) ) ,
119+ 0x53 => write_layout ! ( out, offset, BVec3A ( ) ) , // private members
120+ 0x54 => write_layout ! ( out, offset, BVec4 ( x, y, z, w) ) ,
121+ 0x55 => write_layout ! ( out, offset, BVec4A ( ) ) ,
122+
59123 _ => { }
60124 }
61125}
@@ -80,4 +144,19 @@ mod experiments {
80144 /// * 16 (GPU): 32 size, 16 alignment, 16 b offset
81145 pub b : f32 ,
82146 }
147+
148+ #[ repr( C ) ]
149+ pub struct Struct0x12 {
150+ pub a : BVec3 ,
151+ pub b : f32 ,
152+ pub c : BVec2 ,
153+ pub d : f32 ,
154+ pub e : BVec4 ,
155+ }
156+
157+ #[ repr( C ) ]
158+ #[ repr( align( 16 ) ) ]
159+ pub struct Struct0x13 {
160+ pub a : f32 ,
161+ }
83162}
0 commit comments