text: #pragma once
  
  namespace reyes
  {
  
  enum Dispatch
  {
      DISPATCH_UNIFORM = 0x10,
      DISPATCH_VARYING = 0x20,
  
      DISPATCH_U1 = DISPATCH_UNIFORM | 0,
      DISPATCH_U2 = DISPATCH_UNIFORM | 1,
      DISPATCH_U3 = DISPATCH_UNIFORM | 2,
      DISPATCH_U4 = DISPATCH_UNIFORM | 3,
      DISPATCH_U16 = DISPATCH_UNIFORM | 15,
      DISPATCH_V1 = DISPATCH_VARYING | 0,
      DISPATCH_V2 = DISPATCH_VARYING | 1,
      DISPATCH_V3 = DISPATCH_VARYING | 2,
      DISPATCH_V4 = DISPATCH_VARYING | 3,
      DISPATCH_V16 = DISPATCH_VARYING | 15,
  
      DISPATCH_U1U1 = (DISPATCH_U1 << 8) | DISPATCH_U1,
      DISPATCH_U1U3 = (DISPATCH_U1 << 8) | DISPATCH_U3,
      DISPATCH_U1U4 = (DISPATCH_U1 << 8) | DISPATCH_U4,
      DISPATCH_U2U1 = (DISPATCH_U2 << 8) | DISPATCH_U1,
      DISPATCH_U3U1 = (DISPATCH_U3 << 8) | DISPATCH_U1,
      DISPATCH_U4U1 = (DISPATCH_U4 << 8) | DISPATCH_U1,
      DISPATCH_U16U1 = (DISPATCH_U16 << 8) | DISPATCH_U1,
      DISPATCH_U2U2 = (DISPATCH_U2 << 8) | DISPATCH_U2,
      DISPATCH_U3U3 = (DISPATCH_U3 << 8) | DISPATCH_U3,
      DISPATCH_U4U4 = (DISPATCH_U4 << 8) | DISPATCH_U4,
      DISPATCH_U16U16 = (DISPATCH_U16 << 8) | DISPATCH_U16,
  
      DISPATCH_U1V1 = (DISPATCH_U1 << 8) | DISPATCH_V1,
      DISPATCH_U2V1 = (DISPATCH_U2 << 8) | DISPATCH_V1,
      DISPATCH_U3V1 = (DISPATCH_U3 << 8) | DISPATCH_V1,
      DISPATCH_U4V1 = (DISPATCH_U4 << 8) | DISPATCH_V1,
      DISPATCH_U2V2 = (DISPATCH_U2 << 8) | DISPATCH_V2,
      DISPATCH_U3V3 = (DISPATCH_U3 << 8) | DISPATCH_V3,
      DISPATCH_U4V4 = (DISPATCH_U4 << 8) | DISPATCH_V4,
  
      DISPATCH_V1U1 = (DISPATCH_V1 << 8) | DISPATCH_U1,
      DISPATCH_V2U1 = (DISPATCH_V2 << 8) | DISPATCH_U1,
      DISPATCH_V3U1 = (DISPATCH_V3 << 8) | DISPATCH_U1,
      DISPATCH_V4U1 = (DISPATCH_V4 << 8) | DISPATCH_U1,
      DISPATCH_V2U2 = (DISPATCH_V2 << 8) | DISPATCH_U2,
      DISPATCH_V3U3 = (DISPATCH_V3 << 8) | DISPATCH_U3,
      DISPATCH_V4U4 = (DISPATCH_V4 << 8) | DISPATCH_U4,
  
      DISPATCH_V1V1 = (DISPATCH_V1 << 8) | DISPATCH_V1,
      DISPATCH_V2V1 = (DISPATCH_V2 << 8) | DISPATCH_V1,
      DISPATCH_V3V1 = (DISPATCH_V3 << 8) | DISPATCH_V1,
      DISPATCH_V4V1 = (DISPATCH_V4 << 8) | DISPATCH_V1,
      DISPATCH_V16V1 = (DISPATCH_V16 << 8) | DISPATCH_V1,
      DISPATCH_V2V2 = (DISPATCH_V2 << 8) | DISPATCH_V2,
      DISPATCH_V3V3 = (DISPATCH_V3 << 8) | DISPATCH_V3,
      DISPATCH_V4V4 = (DISPATCH_V4 << 8) | DISPATCH_V4,
      DISPATCH_V16V16 = (DISPATCH_V16 << 8) | DISPATCH_V16,
  
      DISPATCH_U3U3U1 = DISPATCH_U3 | (DISPATCH_U3 << 8) | (DISPATCH_U1 << 16),
      DISPATCH_U3U3V1 = DISPATCH_U3 | (DISPATCH_U3 << 8) | (DISPATCH_V1 << 16),
      DISPATCH_U3V3U1 = DISPATCH_U3 | (DISPATCH_V3 << 8) | (DISPATCH_U1 << 16),
      DISPATCH_U3V3V1 = DISPATCH_U3 | (DISPATCH_V3 << 8) | (DISPATCH_V1 << 16),
      DISPATCH_V3U3U1 = DISPATCH_V3 | (DISPATCH_U3 << 8) | (DISPATCH_U1 << 16),
      DISPATCH_V3U3V1 = DISPATCH_V3 | (DISPATCH_U3 << 8) | (DISPATCH_V1 << 16),
      DISPATCH_V3V3U1 = DISPATCH_V3 | (DISPATCH_V3 << 8) | (DISPATCH_U1 << 16),
      DISPATCH_V3V3V1 = DISPATCH_V3 | (DISPATCH_V3 << 8) | (DISPATCH_V1 << 16)
  };
  
  }
  