summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-06-02 19:02:23 -0700
committerJason Ekstrand <[email protected]>2016-06-22 12:26:43 -0700
commit87f0ffa646e97def0f81ba2ad12eab2702dfd7b1 (patch)
tree7361528a9bde40d41821c8277b769eb5cedf1e26 /src
parent62a5e6e03117e5eb3f777633409cb8036be6877d (diff)
isl/state: Refactor the setup of clear colors
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. Reviewed-by: Chad Versace <[email protected]> Cc: "12.0" <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/intel/isl/isl_surface_state.c40
1 files changed, 22 insertions, 18 deletions
diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c
index 745fea89d00..f36c0199ada 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -373,31 +373,35 @@ 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.f32[0] != 0.0f;
+ s.GreenClearColor = info->clear_color.f32[1] != 0.0f;
+ s.BlueClearColor = info->clear_color.f32[2] != 0.0f;
+ s.AlphaClearColor = info->clear_color.f32[3] != 0.0f;
}
+#endif
GENX(RENDER_SURFACE_STATE_pack)(NULL, state, &s);
}