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