summaryrefslogtreecommitdiffstats
path: root/src/broadcom
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2018-07-03 15:52:59 -0700
committerEric Anholt <eric@anholt.net>2018-07-05 12:39:36 -0700
commit7b63371420526b85cdae1ff17d7b2bbeceee038d (patch)
tree87a5123ca93703920dd54718c0f6782c0ab6bdec /src/broadcom
parentdbd52585fa9fe79aabea3560cb3aaefffe544af9 (diff)
v3d: Respect swap_color_rb for the f32_color_rb case.
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.
Diffstat (limited to 'src/broadcom')
-rw-r--r--src/broadcom/compiler/nir_to_vir.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index 267d61a25ab..8012d483a72 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -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) {