Mesa (master): i965/gen9: Support fast clears for 32b float

Ben Widawsky bwidawsk at kemper.freedesktop.org
Fri Nov 20 19:46:44 UTC 2015


Module: Mesa
Branch: master
Commit: 0288f92e7b0ce5f0d821f2d0ddef522a23776ecb
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0288f92e7b0ce5f0d821f2d0ddef522a23776ecb

Author: Ben Widawsky <benjamin.widawsky at intel.com>
Date:   Tue Oct 13 20:50:27 2015 -0700

i965/gen9: Support fast clears for 32b float

SKL supports the ability to do fast clears and resolves of 32b RGBA as both
integer and floats. This patch only enables float color clears because we
haven't yet enabled integer color clears, (HW support for that was added in
BDW).

v2: Remove LUMINANCE16F and INTENSITY16F special cases since they are now
handled by Neil's patch to disable MSAA fast clears.

Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
Reviewed-by: Neil Roberts <neil at linux.intel.com>
Reviewed-by: Chad Versace <chad.versace at intel.com>

---

 src/mesa/drivers/dri/i965/brw_meta_fast_clear.c |    8 ++++++--
 src/mesa/drivers/dri/i965/gen8_surface_state.c  |    8 --------
 2 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
index f3c256d..499daba 100644
--- a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
+++ b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
@@ -359,8 +359,12 @@ is_color_fast_clear_compatible(struct brw_context *brw,
    }
 
    for (int i = 0; i < 4; i++) {
-      if (color->f[i] != 0.0f && color->f[i] != 1.0f &&
-          _mesa_format_has_color_component(format, i)) {
+      if (!_mesa_format_has_color_component(format, i)) {
+         continue;
+      }
+
+      if (brw->gen < 9 &&
+          color->f[i] != 0.0f && color->f[i] != 1.0f) {
          return false;
       }
    }
diff --git a/src/mesa/drivers/dri/i965/gen8_surface_state.c b/src/mesa/drivers/dri/i965/gen8_surface_state.c
index e81b646..9cdd1c7 100644
--- a/src/mesa/drivers/dri/i965/gen8_surface_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_surface_state.c
@@ -188,14 +188,6 @@ gen8_emit_fast_clear_color(struct brw_context *brw,
                            uint32_t *surf)
 {
    if (brw->gen >= 9) {
-#define check_fast_clear_val(x) \
-      assert(mt->gen9_fast_clear_color.f[x] == 0.0 || \
-             mt->gen9_fast_clear_color.f[x] == 1.0)
-      check_fast_clear_val(0);
-      check_fast_clear_val(1);
-      check_fast_clear_val(2);
-      check_fast_clear_val(3);
-#undef check_fast_clear_val
       surf[12] = mt->gen9_fast_clear_color.ui[0];
       surf[13] = mt->gen9_fast_clear_color.ui[1];
       surf[14] = mt->gen9_fast_clear_color.ui[2];




More information about the mesa-commit mailing list