v3d: Respect swap_color_rb for the f32_color_rb case.
authorEric Anholt <eric@anholt.net>
Tue, 3 Jul 2018 22:52:59 +0000 (15:52 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 5 Jul 2018 19:39:36 +0000 (12:39 -0700)
We don't actually set the two flags together, but I want to use the
r/g/b/a reordered fields in the next commit.

src/broadcom/compiler/nir_to_vir.c

index 267d61a..8012d48 100644 (file)
@@ -1031,14 +1031,16 @@ emit_frag_end(struct v3d_compile *c)
                         }
 
                         if (c->fs_key->f32_color_rb & (1 << rt)) {
-                                inst = vir_MOV_dest(c, vir_reg(QFILE_TLBU, 0), color[0]);
+                                inst = vir_MOV_dest(c, vir_reg(QFILE_TLBU, 0), r);
                                 inst->src[vir_get_implicit_uniform_src(inst)] =
                                         vir_uniform_ui(c, conf);
 
-                                for (int i = 1; i < num_components; i++) {
-                                        inst = vir_MOV_dest(c, vir_reg(QFILE_TLB, 0),
-                                                            color[i]);
-                                }
+                                if (num_components >= 2)
+                                        vir_MOV_dest(c, vir_reg(QFILE_TLB, 0), g);
+                                if (num_components >= 3)
+                                        vir_MOV_dest(c, vir_reg(QFILE_TLB, 0), b);
+                                if (num_components >= 4)
+                                        vir_MOV_dest(c, vir_reg(QFILE_TLB, 0), a);
                         } else {
                                 inst = vir_VFPACK_dest(c, vir_reg(QFILE_TLB, 0), r, g);
                                 if (conf != ~0) {