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