nir: copy intrinsic type when lowering load input/uniform and store output
[mesa.git] / src / compiler / nir / nir_lower_two_sided_color.c
index b6742ab24623637b86909b60529c64d255463f46..d1eb32a18876bd699c6e10405cb61952f7e7302e 100644 (file)
@@ -146,7 +146,7 @@ nir_lower_two_sided_color_block(nir_block *block,
          unsigned drvloc =
             state->colors[idx].front->data.driver_location;
          if (nir_intrinsic_base(intr) == drvloc) {
-            assert(nir_src_as_const_value(intr->src[0]));
+            assert(nir_src_is_const(intr->src[0]));
             break;
          }
       }
@@ -158,7 +158,10 @@ nir_lower_two_sided_color_block(nir_block *block,
        * bcsel(load_system_value(FACE), load_input(COLn), load_input(BFCn))
        */
       b->cursor = nir_before_instr(&intr->instr);
-      nir_ssa_def *face  = nir_load_front_face(b);
+      /* gl_FrontFace is a boolean but the intrinsic constructor creates
+       * 32-bit value by default.
+       */
+      nir_ssa_def *face = nir_load_front_face(b, 1);
       nir_ssa_def *front = load_input(b, state->colors[idx].front);
       nir_ssa_def *back  = load_input(b, state->colors[idx].back);
       nir_ssa_def *color = nir_bcsel(b, face, front, back);