std/etc2: merge alphas and colors fields
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index dcdaf13..cd4e518 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -9574,8 +9574,7 @@
   } private_impl;
 
   struct {
-    uint64_t f_alphas[64];
-    uint64_t f_colors[64];
+    uint64_t f_colors[2][64];
     uint8_t f_buffer[4096];
 
     struct {
@@ -44830,7 +44829,7 @@
               *scratch |= ((uint64_t)(num_bits_0));
             }
           }
-          self->private_data.f_alphas[v_bi] = t_0;
+          self->private_data.f_colors[0u][v_bi] = t_0;
         }
       }
       {
@@ -44860,7 +44859,7 @@
             *scratch |= ((uint64_t)(num_bits_1));
           }
         }
-        self->private_data.f_colors[v_bi] = t_1;
+        self->private_data.f_colors[1u][v_bi] = t_1;
       }
       v_bi += 1u;
     }
@@ -44911,7 +44910,7 @@
   bool v_flip = false;
 
   while (v_bi < self->private_impl.f_num_buffered_blocks) {
-    v_color = self->private_data.f_colors[v_bi];
+    v_color = self->private_data.f_colors[1u][v_bi];
     v_diff = ((v_color & 8589934592u) != 0u);
     v_tran = ( ! v_diff && (self->private_impl.f_pixfmt == 2197850248u));
     if ( ! v_diff && (self->private_impl.f_pixfmt != 2197850248u)) {
@@ -45283,7 +45282,7 @@
   uint32_t v_o = 0;
 
   while (v_bi < self->private_impl.f_num_buffered_blocks) {
-    v_alpha = self->private_data.f_alphas[v_bi];
+    v_alpha = self->private_data.f_colors[0u][v_bi];
     v_a0 = ((uint32_t)((v_alpha >> 56u)));
     v_multiplier = ((uint32_t)(((v_alpha >> 52u) & 15u)));
     v_which = ((uint32_t)(((v_alpha >> 48u) & 15u)));
@@ -45373,11 +45372,7 @@
 
   v_nbb = wuffs_base__u32__min(self->private_impl.f_num_buffered_blocks, 32u);
   while (v_bi < v_nbb) {
-    if (a_input == 0u) {
-      v_color = self->private_data.f_alphas[v_bi];
-    } else {
-      v_color = self->private_data.f_colors[v_bi];
-    }
+    v_color = self->private_data.f_colors[a_input][v_bi];
     v_c0 = ((((uint32_t)((v_color >> 56u))) * 8u) + 4u);
     v_multiplier = ((uint32_t)(((v_color >> 52u) & 15u)));
     v_multiplier *= 8u;
@@ -45437,11 +45432,7 @@
 
   v_nbb = wuffs_base__u32__min(self->private_impl.f_num_buffered_blocks, 32u);
   while (v_bi < v_nbb) {
-    if (a_input == 0u) {
-      v_color = self->private_data.f_alphas[v_bi];
-    } else {
-      v_color = self->private_data.f_colors[v_bi];
-    }
+    v_color = self->private_data.f_colors[a_input][v_bi];
     v_c0 = (((uint32_t)((v_color >> 56u))) * 8u);
     if (v_c0 < 1024u) {
     } else if (v_c0 == 1024u) {
diff --git a/std/etc2/decode_etc2.wuffs b/std/etc2/decode_etc2.wuffs
index db417cc..e5925a7 100644
--- a/std/etc2/decode_etc2.wuffs
+++ b/std/etc2/decode_etc2.wuffs
@@ -63,8 +63,13 @@
         swizzler : base.pixel_swizzler,
         util     : base.utility,
 ) + (
-        alphas : array[64] base.u64,
-        colors : array[64] base.u64,
+        // Usually, with 8 (instead of 16) bytes per block, colors[0] is unused
+        // and colors[1] holds color codes.
+        //
+        // For RGBA8, colors[0] and colors[1] hold alpha and color codes.
+        //
+        // For RG11U / RG11S, colors[0] and colors[1] hold red and green codes.
+        colors : array[2] array[64] base.u64,
 
         // buffer holds 64 blocks. Each block is 4×4 pixels, 64 bytes.
         buffer : array[4096] base.u8,
@@ -293,9 +298,9 @@
         assert bi < 64 via "a < b: a < c; c <= b"(c: this.num_buffered_blocks)
         if (this.pixfmt == base.PIXEL_FORMAT__BGRA_NONPREMUL) or
                 (this.pixfmt == base.PIXEL_FORMAT__BGRA_NONPREMUL_4X16LE) {
-            this.alphas[bi] = args.src.read_u64be?()
+            this.colors[0][bi] = args.src.read_u64be?()
         }
-        this.colors[bi] = args.src.read_u64be?()
+        this.colors[1][bi] = args.src.read_u64be?()
         bi += 1
     }
 }
@@ -317,7 +322,7 @@
 
     while bi < this.num_buffered_blocks {
         assert bi < 64 via "a < b: a < c; c <= b"(c: this.num_buffered_blocks)
-        color = this.colors[bi]
+        color = this.colors[1][bi]
 
         diff = (color & 0x2_0000_0000) <> 0
         tran = (not diff) and (this.pixfmt == base.PIXEL_FORMAT__BGRA_BINARY)
@@ -782,7 +787,7 @@
 
     while bi < this.num_buffered_blocks {
         assert bi < 64 via "a < b: a < c; c <= b"(c: this.num_buffered_blocks)
-        alpha = this.alphas[bi]
+        alpha = this.colors[0][bi]
 
         a0 = (alpha >> 56) as base.u32
         multiplier = ((alpha >> 52) & 0x0F) as base.u32
@@ -848,11 +853,7 @@
     nbb = this.num_buffered_blocks.min(no_more_than: 32)
     while bi < nbb {
         assert bi < 32 via "a < b: a < c; c <= b"(c: nbb)
-        if args.input == 0 {
-            color = this.alphas[bi]
-        } else {
-            color = this.colors[bi]
-        }
+        color = this.colors[args.input][bi]
 
         c0 = (((color >> 56) as base.u32) * 8) + 4
         multiplier = ((color >> 52) & 0x0F) as base.u32
@@ -914,11 +915,7 @@
     nbb = this.num_buffered_blocks.min(no_more_than: 32)
     while bi < nbb {
         assert bi < 32 via "a < b: a < c; c <= b"(c: nbb)
-        if args.input == 0 {
-            color = this.alphas[bi]
-        } else {
-            color = this.colors[bi]
-        }
+        color = this.colors[args.input][bi]
 
         c0 = ((color >> 56) as base.u32) * 8
         if c0 < (0x80 * 8) {