[Mesa-dev] [PATCH 17/64] isl/state: Refactor the setup of clear colors

Jason Ekstrand jason at jlekstrand.net
Sat Jun 11 16:02:32 UTC 2016


This commit switches clear colors to use #if's instead of a C if.  This
lets us properly handle SNB where the clear color field doesn't exist.
---
 src/intel/isl/isl_surface_state.c | 44 +++++++++++++++++++--------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c
index db90936..aa720d8 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -372,31 +372,31 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
    }
 #endif
 
-   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);
-         }
-      } else {
-         for (unsigned i = 0; i < 4; i++) {
-            assert(info->clear_color.f32[i] == 0.0f ||
-                   info->clear_color.f32[i] == 1.0f);
-         }
+#if GEN_GEN >= 9
+   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];
+#elif GEN_GEN >= 7
+   /* 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);
       }
-      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 {
-      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];
+      for (unsigned i = 0; i < 4; i++) {
+         assert(info->clear_color.f32[i] == 0.0f ||
+                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;
+#endif
 
    GENX(RENDER_SURFACE_STATE_pack)(NULL, state, &s);
 }
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list