| // SPDX-License-Identifier: Apache-2.0 OR MIT OR Unlicense |
| |
| // Code auto-generated by piet-gpu-derive |
| |
| struct StateRef { |
| uint offset; |
| }; |
| |
| struct State { |
| vec4 mat; |
| vec2 translate; |
| vec4 bbox; |
| float linewidth; |
| uint flags; |
| uint path_count; |
| uint pathseg_count; |
| uint trans_count; |
| }; |
| |
| #define State_size 60 |
| |
| StateRef State_index(StateRef ref, uint index) { |
| return StateRef(ref.offset + index * State_size); |
| } |
| |
| State State_read(StateRef ref) { |
| uint ix = ref.offset >> 2; |
| uint raw0 = state[ix + 0]; |
| uint raw1 = state[ix + 1]; |
| uint raw2 = state[ix + 2]; |
| uint raw3 = state[ix + 3]; |
| uint raw4 = state[ix + 4]; |
| uint raw5 = state[ix + 5]; |
| uint raw6 = state[ix + 6]; |
| uint raw7 = state[ix + 7]; |
| uint raw8 = state[ix + 8]; |
| uint raw9 = state[ix + 9]; |
| uint raw10 = state[ix + 10]; |
| uint raw11 = state[ix + 11]; |
| uint raw12 = state[ix + 12]; |
| uint raw13 = state[ix + 13]; |
| uint raw14 = state[ix + 14]; |
| State s; |
| s.mat = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3)); |
| s.translate = vec2(uintBitsToFloat(raw4), uintBitsToFloat(raw5)); |
| s.bbox = vec4(uintBitsToFloat(raw6), uintBitsToFloat(raw7), uintBitsToFloat(raw8), uintBitsToFloat(raw9)); |
| s.linewidth = uintBitsToFloat(raw10); |
| s.flags = raw11; |
| s.path_count = raw12; |
| s.pathseg_count = raw13; |
| s.trans_count = raw14; |
| return s; |
| } |
| |
| void State_write(StateRef ref, State s) { |
| uint ix = ref.offset >> 2; |
| state[ix + 0] = floatBitsToUint(s.mat.x); |
| state[ix + 1] = floatBitsToUint(s.mat.y); |
| state[ix + 2] = floatBitsToUint(s.mat.z); |
| state[ix + 3] = floatBitsToUint(s.mat.w); |
| state[ix + 4] = floatBitsToUint(s.translate.x); |
| state[ix + 5] = floatBitsToUint(s.translate.y); |
| state[ix + 6] = floatBitsToUint(s.bbox.x); |
| state[ix + 7] = floatBitsToUint(s.bbox.y); |
| state[ix + 8] = floatBitsToUint(s.bbox.z); |
| state[ix + 9] = floatBitsToUint(s.bbox.w); |
| state[ix + 10] = floatBitsToUint(s.linewidth); |
| state[ix + 11] = s.flags; |
| state[ix + 12] = s.path_count; |
| state[ix + 13] = s.pathseg_count; |
| state[ix + 14] = s.trans_count; |
| } |
| |