ptcl.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 CmdStrokeRef {
6 uint offset;
7 };
8
9 struct CmdFillRef {
10 uint offset;
11 };
12
13 struct CmdColorRef {
14 uint offset;
15 };
16
17 struct CmdImageRef {
18 uint offset;
19 };
20
21 struct CmdAlphaRef {
22 uint offset;
23 };
24
25 struct CmdJumpRef {
26 uint offset;
27 };
28
29 struct CmdRef {
30 uint offset;
31 };
32
33 struct CmdStroke {
34 uint tile_ref;
35 float half_width;
36 };
37
38 #define CmdStroke_size 8
39
40 CmdStrokeRef CmdStroke_index(CmdStrokeRef ref, uint index) {
41 return CmdStrokeRef(ref.offset + index * CmdStroke_size);
42 }
43
44 struct CmdFill {
45 uint tile_ref;
46 int backdrop;
47 };
48
49 #define CmdFill_size 8
50
51 CmdFillRef CmdFill_index(CmdFillRef ref, uint index) {
52 return CmdFillRef(ref.offset + index * CmdFill_size);
53 }
54
55 struct CmdColor {
56 uint rgba_color;
57 };
58
59 #define CmdColor_size 4
60
61 CmdColorRef CmdColor_index(CmdColorRef ref, uint index) {
62 return CmdColorRef(ref.offset + index * CmdColor_size);
63 }
64
65 struct CmdImage {
66 uint index;
67 ivec2 offset;
68 };
69
70 #define CmdImage_size 8
71
72 CmdImageRef CmdImage_index(CmdImageRef ref, uint index) {
73 return CmdImageRef(ref.offset + index * CmdImage_size);
74 }
75
76 struct CmdAlpha {
77 float alpha;
78 };
79
80 #define CmdAlpha_size 4
81
82 CmdAlphaRef CmdAlpha_index(CmdAlphaRef ref, uint index) {
83 return CmdAlphaRef(ref.offset + index * CmdAlpha_size);
84 }
85
86 struct CmdJump {
87 uint new_ref;
88 };
89
90 #define CmdJump_size 4
91
92 CmdJumpRef CmdJump_index(CmdJumpRef ref, uint index) {
93 return CmdJumpRef(ref.offset + index * CmdJump_size);
94 }
95
96 #define Cmd_End 0
97 #define Cmd_Fill 1
98 #define Cmd_Stroke 2
99 #define Cmd_Solid 3
100 #define Cmd_Alpha 4
101 #define Cmd_Color 5
102 #define Cmd_Image 6
103 #define Cmd_BeginClip 7
104 #define Cmd_EndClip 8
105 #define Cmd_Jump 9
106 #define Cmd_size 12
107
108 CmdRef Cmd_index(CmdRef ref, uint index) {
109 return CmdRef(ref.offset + index * Cmd_size);
110 }
111
112 struct CmdTag {
113 uint tag;
114 uint flags;
115 };
116
117 CmdStroke CmdStroke_read(Alloc a, CmdStrokeRef ref) {
118 uint ix = ref.offset >> 2;
119 uint raw0 = read_mem(a, ix + 0);
120 uint raw1 = read_mem(a, ix + 1);
121 CmdStroke s;
122 s.tile_ref = raw0;
123 s.half_width = uintBitsToFloat(raw1);
124 return s;
125 }
126
127 void CmdStroke_write(Alloc a, CmdStrokeRef ref, CmdStroke s) {
128 uint ix = ref.offset >> 2;
129 write_mem(a, ix + 0, s.tile_ref);
130 write_mem(a, ix + 1, floatBitsToUint(s.half_width));
131 }
132
133 CmdFill CmdFill_read(Alloc a, CmdFillRef ref) {
134 uint ix = ref.offset >> 2;
135 uint raw0 = read_mem(a, ix + 0);
136 uint raw1 = read_mem(a, ix + 1);
137 CmdFill s;
138 s.tile_ref = raw0;
139 s.backdrop = int(raw1);
140 return s;
141 }
142
143 void CmdFill_write(Alloc a, CmdFillRef ref, CmdFill s) {
144 uint ix = ref.offset >> 2;
145 write_mem(a, ix + 0, s.tile_ref);
146 write_mem(a, ix + 1, uint(s.backdrop));
147 }
148
149 CmdColor CmdColor_read(Alloc a, CmdColorRef ref) {
150 uint ix = ref.offset >> 2;
151 uint raw0 = read_mem(a, ix + 0);
152 CmdColor s;
153 s.rgba_color = raw0;
154 return s;
155 }
156
157 void CmdColor_write(Alloc a, CmdColorRef ref, CmdColor s) {
158 uint ix = ref.offset >> 2;
159 write_mem(a, ix + 0, s.rgba_color);
160 }
161
162 CmdImage CmdImage_read(Alloc a, CmdImageRef ref) {
163 uint ix = ref.offset >> 2;
164 uint raw0 = read_mem(a, ix + 0);
165 uint raw1 = read_mem(a, ix + 1);
166 CmdImage s;
167 s.index = raw0;
168 s.offset = ivec2(int(raw1 << 16) >> 16, int(raw1) >> 16);
169 return s;
170 }
171
172 void CmdImage_write(Alloc a, CmdImageRef ref, CmdImage s) {
173 uint ix = ref.offset >> 2;
174 write_mem(a, ix + 0, s.index);
175 write_mem(a, ix + 1, (uint(s.offset.x) & 0xffff) | (uint(s.offset.y) << 16));
176 }
177
178 CmdAlpha CmdAlpha_read(Alloc a, CmdAlphaRef ref) {
179 uint ix = ref.offset >> 2;
180 uint raw0 = read_mem(a, ix + 0);
181 CmdAlpha s;
182 s.alpha = uintBitsToFloat(raw0);
183 return s;
184 }
185
186 void CmdAlpha_write(Alloc a, CmdAlphaRef ref, CmdAlpha s) {
187 uint ix = ref.offset >> 2;
188 write_mem(a, ix + 0, floatBitsToUint(s.alpha));
189 }
190
191 CmdJump CmdJump_read(Alloc a, CmdJumpRef ref) {
192 uint ix = ref.offset >> 2;
193 uint raw0 = read_mem(a, ix + 0);
194 CmdJump s;
195 s.new_ref = raw0;
196 return s;
197 }
198
199 void CmdJump_write(Alloc a, CmdJumpRef ref, CmdJump s) {
200 uint ix = ref.offset >> 2;
201 write_mem(a, ix + 0, s.new_ref);
202 }
203
204 CmdTag Cmd_tag(Alloc a, CmdRef ref) {
205 uint tag_and_flags = read_mem(a, ref.offset >> 2);
206 return CmdTag(tag_and_flags & 0xffff, tag_and_flags >> 16);
207 }
208
209 CmdFill Cmd_Fill_read(Alloc a, CmdRef ref) {
210 return CmdFill_read(a, CmdFillRef(ref.offset + 4));
211 }
212
213 CmdStroke Cmd_Stroke_read(Alloc a, CmdRef ref) {
214 return CmdStroke_read(a, CmdStrokeRef(ref.offset + 4));
215 }
216
217 CmdAlpha Cmd_Alpha_read(Alloc a, CmdRef ref) {
218 return CmdAlpha_read(a, CmdAlphaRef(ref.offset + 4));
219 }
220
221 CmdColor Cmd_Color_read(Alloc a, CmdRef ref) {
222 return CmdColor_read(a, CmdColorRef(ref.offset + 4));
223 }
224
225 CmdImage Cmd_Image_read(Alloc a, CmdRef ref) {
226 return CmdImage_read(a, CmdImageRef(ref.offset + 4));
227 }
228
229 CmdJump Cmd_Jump_read(Alloc a, CmdRef ref) {
230 return CmdJump_read(a, CmdJumpRef(ref.offset + 4));
231 }
232
233 void Cmd_End_write(Alloc a, CmdRef ref) {
234 write_mem(a, ref.offset >> 2, Cmd_End);
235 }
236
237 void Cmd_Fill_write(Alloc a, CmdRef ref, CmdFill s) {
238 write_mem(a, ref.offset >> 2, Cmd_Fill);
239 CmdFill_write(a, CmdFillRef(ref.offset + 4), s);
240 }
241
242 void Cmd_Stroke_write(Alloc a, CmdRef ref, CmdStroke s) {
243 write_mem(a, ref.offset >> 2, Cmd_Stroke);
244 CmdStroke_write(a, CmdStrokeRef(ref.offset + 4), s);
245 }
246
247 void Cmd_Solid_write(Alloc a, CmdRef ref) {
248 write_mem(a, ref.offset >> 2, Cmd_Solid);
249 }
250
251 void Cmd_Alpha_write(Alloc a, CmdRef ref, CmdAlpha s) {
252 write_mem(a, ref.offset >> 2, Cmd_Alpha);
253 CmdAlpha_write(a, CmdAlphaRef(ref.offset + 4), s);
254 }
255
256 void Cmd_Color_write(Alloc a, CmdRef ref, CmdColor s) {
257 write_mem(a, ref.offset >> 2, Cmd_Color);
258 CmdColor_write(a, CmdColorRef(ref.offset + 4), s);
259 }
260
261 void Cmd_Image_write(Alloc a, CmdRef ref, CmdImage s) {
262 write_mem(a, ref.offset >> 2, Cmd_Image);
263 CmdImage_write(a, CmdImageRef(ref.offset + 4), s);
264 }
265
266 void Cmd_BeginClip_write(Alloc a, CmdRef ref) {
267 write_mem(a, ref.offset >> 2, Cmd_BeginClip);
268 }
269
270 void Cmd_EndClip_write(Alloc a, CmdRef ref) {
271 write_mem(a, ref.offset >> 2, Cmd_EndClip);
272 }
273
274 void Cmd_Jump_write(Alloc a, CmdRef ref, CmdJump s) {
275 write_mem(a, ref.offset >> 2, Cmd_Jump);
276 CmdJump_write(a, CmdJumpRef(ref.offset + 4), s);
277 }
278
279