state.h raw
1 // SPDX-License-Identifier: Apache-2.0 OR MIT OR Unlicense
2
3 // Code auto-generated by piet-gpu-derive
4
5 struct StateRef {
6 uint offset;
7 };
8
9 struct State {
10 vec4 mat;
11 vec2 translate;
12 vec4 bbox;
13 float linewidth;
14 uint flags;
15 uint path_count;
16 uint pathseg_count;
17 uint trans_count;
18 };
19
20 #define State_size 60
21
22 StateRef State_index(StateRef ref, uint index) {
23 return StateRef(ref.offset + index * State_size);
24 }
25
26 State State_read(StateRef ref) {
27 uint ix = ref.offset >> 2;
28 uint raw0 = state[ix + 0];
29 uint raw1 = state[ix + 1];
30 uint raw2 = state[ix + 2];
31 uint raw3 = state[ix + 3];
32 uint raw4 = state[ix + 4];
33 uint raw5 = state[ix + 5];
34 uint raw6 = state[ix + 6];
35 uint raw7 = state[ix + 7];
36 uint raw8 = state[ix + 8];
37 uint raw9 = state[ix + 9];
38 uint raw10 = state[ix + 10];
39 uint raw11 = state[ix + 11];
40 uint raw12 = state[ix + 12];
41 uint raw13 = state[ix + 13];
42 uint raw14 = state[ix + 14];
43 State s;
44 s.mat = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3));
45 s.translate = vec2(uintBitsToFloat(raw4), uintBitsToFloat(raw5));
46 s.bbox = vec4(uintBitsToFloat(raw6), uintBitsToFloat(raw7), uintBitsToFloat(raw8), uintBitsToFloat(raw9));
47 s.linewidth = uintBitsToFloat(raw10);
48 s.flags = raw11;
49 s.path_count = raw12;
50 s.pathseg_count = raw13;
51 s.trans_count = raw14;
52 return s;
53 }
54
55 void State_write(StateRef ref, State s) {
56 uint ix = ref.offset >> 2;
57 state[ix + 0] = floatBitsToUint(s.mat.x);
58 state[ix + 1] = floatBitsToUint(s.mat.y);
59 state[ix + 2] = floatBitsToUint(s.mat.z);
60 state[ix + 3] = floatBitsToUint(s.mat.w);
61 state[ix + 4] = floatBitsToUint(s.translate.x);
62 state[ix + 5] = floatBitsToUint(s.translate.y);
63 state[ix + 6] = floatBitsToUint(s.bbox.x);
64 state[ix + 7] = floatBitsToUint(s.bbox.y);
65 state[ix + 8] = floatBitsToUint(s.bbox.z);
66 state[ix + 9] = floatBitsToUint(s.bbox.w);
67 state[ix + 10] = floatBitsToUint(s.linewidth);
68 state[ix + 11] = s.flags;
69 state[ix + 12] = s.path_count;
70 state[ix + 13] = s.pathseg_count;
71 state[ix + 14] = s.trans_count;
72 }
73
74