isl/surface_state: Set the clear color
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 9 Mar 2016 20:38:58 +0000 (12:38 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 10 Mar 2016 18:41:52 +0000 (10:41 -0800)
src/intel/isl/isl_surface_state.c

index f3390a6c553c2361c9b5d09dfeed0076187a461c..6afe45d650ef9a57fc79213a04ab8924db756715 100644 (file)
@@ -393,9 +393,11 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
    }
 #endif
 
-#if 0
-   if (GEN_GEN == 8) {
-      if (isl_format_is_integer(info->view->format)) {
+   if (GEN_GEN <= 8) {
+      /* Prior to Sky Lake, we only have one bit for the clear color which
+       * gives us 0 or 1 in whatever the surface's format happens to be.
+       */
+      if (isl_format_has_int_channel(info->view->format)) {
          for (unsigned i = 0; i < 4; i++) {
             assert(info->clear_color.u32[i] == 0 ||
                    info->clear_color.u32[i] == 1);
@@ -406,17 +408,16 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
                    info->clear_color.f32[i] == 1.0f);
          }
       }
-      s.RedClearColor = info->clear_color.u32[0] != 0,
-      s.GreenClearColor = info->clear_color.u32[1] != 0,
-      s.BlueClearColor = info->clear_color.u32[2] != 0,
-      s.AlphaClearColor = info->clear_color.u32[3] != 0,
+      s.RedClearColor = info->clear_color.u32[0] != 0;
+      s.GreenClearColor = info->clear_color.u32[1] != 0;
+      s.BlueClearColor = info->clear_color.u32[2] != 0;
+      s.AlphaClearColor = info->clear_color.u32[3] != 0;
    } else {
-      .RedClearColor = info->clear_color.u32[0],
-      .GreenClearColor = info->clear_color.u32[1],
-      .BlueClearColor = info->clear_color.u32[2],
-      .AlphaClearColor = info->clear_color.u32[3],
+      s.RedClearColor = info->clear_color.u32[0];
+      s.GreenClearColor = info->clear_color.u32[1];
+      s.BlueClearColor = info->clear_color.u32[2];
+      s.AlphaClearColor = info->clear_color.u32[3];
    }
-#endif
 
    GENX(RENDER_SURFACE_STATE_pack)(NULL, state, &s);
 }