github.com/cybriq/giocore@v0.0.7-0.20210703034601-cfb9cb5f3900/gpu/shaders/annotated.h (about)

     1  // SPDX-License-Identifier: Apache-2.0 OR MIT OR Unlicense
     2  
     3  // Code auto-generated by piet-gpu-derive
     4  
     5  struct AnnoImageRef {
     6      uint offset;
     7  };
     8  
     9  struct AnnoColorRef {
    10      uint offset;
    11  };
    12  
    13  struct AnnoBeginClipRef {
    14      uint offset;
    15  };
    16  
    17  struct AnnoEndClipRef {
    18      uint offset;
    19  };
    20  
    21  struct AnnotatedRef {
    22      uint offset;
    23  };
    24  
    25  struct AnnoImage {
    26      vec4 bbox;
    27      float linewidth;
    28      uint index;
    29      ivec2 offset;
    30  };
    31  
    32  #define AnnoImage_size 28
    33  
    34  AnnoImageRef AnnoImage_index(AnnoImageRef ref, uint index) {
    35      return AnnoImageRef(ref.offset + index * AnnoImage_size);
    36  }
    37  
    38  struct AnnoColor {
    39      vec4 bbox;
    40      float linewidth;
    41      uint rgba_color;
    42  };
    43  
    44  #define AnnoColor_size 24
    45  
    46  AnnoColorRef AnnoColor_index(AnnoColorRef ref, uint index) {
    47      return AnnoColorRef(ref.offset + index * AnnoColor_size);
    48  }
    49  
    50  struct AnnoBeginClip {
    51      vec4 bbox;
    52      float linewidth;
    53  };
    54  
    55  #define AnnoBeginClip_size 20
    56  
    57  AnnoBeginClipRef AnnoBeginClip_index(AnnoBeginClipRef ref, uint index) {
    58      return AnnoBeginClipRef(ref.offset + index * AnnoBeginClip_size);
    59  }
    60  
    61  struct AnnoEndClip {
    62      vec4 bbox;
    63  };
    64  
    65  #define AnnoEndClip_size 16
    66  
    67  AnnoEndClipRef AnnoEndClip_index(AnnoEndClipRef ref, uint index) {
    68      return AnnoEndClipRef(ref.offset + index * AnnoEndClip_size);
    69  }
    70  
    71  #define Annotated_Nop 0
    72  #define Annotated_Color 1
    73  #define Annotated_Image 2
    74  #define Annotated_BeginClip 3
    75  #define Annotated_EndClip 4
    76  #define Annotated_size 32
    77  
    78  AnnotatedRef Annotated_index(AnnotatedRef ref, uint index) {
    79      return AnnotatedRef(ref.offset + index * Annotated_size);
    80  }
    81  
    82  struct AnnotatedTag {
    83     uint tag;
    84     uint flags;
    85  };
    86  
    87  AnnoImage AnnoImage_read(Alloc a, AnnoImageRef ref) {
    88      uint ix = ref.offset >> 2;
    89      uint raw0 = read_mem(a, ix + 0);
    90      uint raw1 = read_mem(a, ix + 1);
    91      uint raw2 = read_mem(a, ix + 2);
    92      uint raw3 = read_mem(a, ix + 3);
    93      uint raw4 = read_mem(a, ix + 4);
    94      uint raw5 = read_mem(a, ix + 5);
    95      uint raw6 = read_mem(a, ix + 6);
    96      AnnoImage s;
    97      s.bbox = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3));
    98      s.linewidth = uintBitsToFloat(raw4);
    99      s.index = raw5;
   100      s.offset = ivec2(int(raw6 << 16) >> 16, int(raw6) >> 16);
   101      return s;
   102  }
   103  
   104  void AnnoImage_write(Alloc a, AnnoImageRef ref, AnnoImage s) {
   105      uint ix = ref.offset >> 2;
   106      write_mem(a, ix + 0, floatBitsToUint(s.bbox.x));
   107      write_mem(a, ix + 1, floatBitsToUint(s.bbox.y));
   108      write_mem(a, ix + 2, floatBitsToUint(s.bbox.z));
   109      write_mem(a, ix + 3, floatBitsToUint(s.bbox.w));
   110      write_mem(a, ix + 4, floatBitsToUint(s.linewidth));
   111      write_mem(a, ix + 5, s.index);
   112      write_mem(a, ix + 6, (uint(s.offset.x) & 0xffff) | (uint(s.offset.y) << 16));
   113  }
   114  
   115  AnnoColor AnnoColor_read(Alloc a, AnnoColorRef ref) {
   116      uint ix = ref.offset >> 2;
   117      uint raw0 = read_mem(a, ix + 0);
   118      uint raw1 = read_mem(a, ix + 1);
   119      uint raw2 = read_mem(a, ix + 2);
   120      uint raw3 = read_mem(a, ix + 3);
   121      uint raw4 = read_mem(a, ix + 4);
   122      uint raw5 = read_mem(a, ix + 5);
   123      AnnoColor s;
   124      s.bbox = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3));
   125      s.linewidth = uintBitsToFloat(raw4);
   126      s.rgba_color = raw5;
   127      return s;
   128  }
   129  
   130  void AnnoColor_write(Alloc a, AnnoColorRef ref, AnnoColor s) {
   131      uint ix = ref.offset >> 2;
   132      write_mem(a, ix + 0, floatBitsToUint(s.bbox.x));
   133      write_mem(a, ix + 1, floatBitsToUint(s.bbox.y));
   134      write_mem(a, ix + 2, floatBitsToUint(s.bbox.z));
   135      write_mem(a, ix + 3, floatBitsToUint(s.bbox.w));
   136      write_mem(a, ix + 4, floatBitsToUint(s.linewidth));
   137      write_mem(a, ix + 5, s.rgba_color);
   138  }
   139  
   140  AnnoBeginClip AnnoBeginClip_read(Alloc a, AnnoBeginClipRef ref) {
   141      uint ix = ref.offset >> 2;
   142      uint raw0 = read_mem(a, ix + 0);
   143      uint raw1 = read_mem(a, ix + 1);
   144      uint raw2 = read_mem(a, ix + 2);
   145      uint raw3 = read_mem(a, ix + 3);
   146      uint raw4 = read_mem(a, ix + 4);
   147      AnnoBeginClip s;
   148      s.bbox = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3));
   149      s.linewidth = uintBitsToFloat(raw4);
   150      return s;
   151  }
   152  
   153  void AnnoBeginClip_write(Alloc a, AnnoBeginClipRef ref, AnnoBeginClip s) {
   154      uint ix = ref.offset >> 2;
   155      write_mem(a, ix + 0, floatBitsToUint(s.bbox.x));
   156      write_mem(a, ix + 1, floatBitsToUint(s.bbox.y));
   157      write_mem(a, ix + 2, floatBitsToUint(s.bbox.z));
   158      write_mem(a, ix + 3, floatBitsToUint(s.bbox.w));
   159      write_mem(a, ix + 4, floatBitsToUint(s.linewidth));
   160  }
   161  
   162  AnnoEndClip AnnoEndClip_read(Alloc a, AnnoEndClipRef ref) {
   163      uint ix = ref.offset >> 2;
   164      uint raw0 = read_mem(a, ix + 0);
   165      uint raw1 = read_mem(a, ix + 1);
   166      uint raw2 = read_mem(a, ix + 2);
   167      uint raw3 = read_mem(a, ix + 3);
   168      AnnoEndClip s;
   169      s.bbox = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3));
   170      return s;
   171  }
   172  
   173  void AnnoEndClip_write(Alloc a, AnnoEndClipRef ref, AnnoEndClip s) {
   174      uint ix = ref.offset >> 2;
   175      write_mem(a, ix + 0, floatBitsToUint(s.bbox.x));
   176      write_mem(a, ix + 1, floatBitsToUint(s.bbox.y));
   177      write_mem(a, ix + 2, floatBitsToUint(s.bbox.z));
   178      write_mem(a, ix + 3, floatBitsToUint(s.bbox.w));
   179  }
   180  
   181  AnnotatedTag Annotated_tag(Alloc a, AnnotatedRef ref) {
   182      uint tag_and_flags = read_mem(a, ref.offset >> 2);
   183      return AnnotatedTag(tag_and_flags & 0xffff, tag_and_flags >> 16);
   184  }
   185  
   186  AnnoColor Annotated_Color_read(Alloc a, AnnotatedRef ref) {
   187      return AnnoColor_read(a, AnnoColorRef(ref.offset + 4));
   188  }
   189  
   190  AnnoImage Annotated_Image_read(Alloc a, AnnotatedRef ref) {
   191      return AnnoImage_read(a, AnnoImageRef(ref.offset + 4));
   192  }
   193  
   194  AnnoBeginClip Annotated_BeginClip_read(Alloc a, AnnotatedRef ref) {
   195      return AnnoBeginClip_read(a, AnnoBeginClipRef(ref.offset + 4));
   196  }
   197  
   198  AnnoEndClip Annotated_EndClip_read(Alloc a, AnnotatedRef ref) {
   199      return AnnoEndClip_read(a, AnnoEndClipRef(ref.offset + 4));
   200  }
   201  
   202  void Annotated_Nop_write(Alloc a, AnnotatedRef ref) {
   203      write_mem(a, ref.offset >> 2, Annotated_Nop);
   204  }
   205  
   206  void Annotated_Color_write(Alloc a, AnnotatedRef ref, uint flags, AnnoColor s) {
   207      write_mem(a, ref.offset >> 2, (flags << 16) | Annotated_Color);
   208      AnnoColor_write(a, AnnoColorRef(ref.offset + 4), s);
   209  }
   210  
   211  void Annotated_Image_write(Alloc a, AnnotatedRef ref, uint flags, AnnoImage s) {
   212      write_mem(a, ref.offset >> 2, (flags << 16) | Annotated_Image);
   213      AnnoImage_write(a, AnnoImageRef(ref.offset + 4), s);
   214  }
   215  
   216  void Annotated_BeginClip_write(Alloc a, AnnotatedRef ref, uint flags, AnnoBeginClip s) {
   217      write_mem(a, ref.offset >> 2, (flags << 16) | Annotated_BeginClip);
   218      AnnoBeginClip_write(a, AnnoBeginClipRef(ref.offset + 4), s);
   219  }
   220  
   221  void Annotated_EndClip_write(Alloc a, AnnotatedRef ref, AnnoEndClip s) {
   222      write_mem(a, ref.offset >> 2, Annotated_EndClip);
   223      AnnoEndClip_write(a, AnnoEndClipRef(ref.offset + 4), s);
   224  }
   225