[Mesa-dev] [PATCH 2/2] i965/skl: [SQUASH] Update the MCS buffer scale sizes

Ben Widawsky benjamin.widawsky at intel.com
Thu Feb 26 15:42:53 PST 2015


Keep this as a separate patch for review, but I will squash it with the previous
patch before pushing.

We don't support 16x MSAA yet, but I entered it in here while I was at the
table.

I'm having trouble getting through a piglit run on SKL at the moment, so I just
few a threw small tests at it:

tests/fast_color_clear/all-colors.shader_test
tests/fast_color_clear/non-redundant-clear.shader_test
tests/fast_color_clear/redundant-clear.shader_test
tests/fast_color_clear/fast-slow-clear-interaction.shader_test

Cc: Kristian Høgsberg <krh at bitplanet.net>
Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
---
 src/gallium/drivers/ilo/ilo_layout.c            |  5 ++++-
 src/mesa/drivers/dri/i965/brw_meta_fast_clear.c |  2 ++
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c   | 11 +++++++++--
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/ilo/ilo_layout.c b/src/gallium/drivers/ilo/ilo_layout.c
index 0b639b2..c2c8ec5 100644
--- a/src/gallium/drivers/ilo/ilo_layout.c
+++ b/src/gallium/drivers/ilo/ilo_layout.c
@@ -1257,7 +1257,10 @@ layout_calculate_mcs_size(struct ilo_layout *layout,
          break;
       case INTEL_TILING_Y:
          downscale_x = 32 / layout->block_size;
-         downscale_y = 4;
+         if (brw->gen >= 9)
+            downscale_y = 2;
+         else
+            downscale_y = 4;
          break;
       default:
          assert(!"unsupported tiling mode");
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 c4d4b68..f487e97 100644
--- a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
+++ b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
@@ -289,6 +289,8 @@ get_fast_clear_rect(struct brw_context *brw, struct gl_framebuffer *fb,
       case 8:
          x_scaledown = 2;
          break;
+      case 16:
+         x_scaledown = 1;
       default:
          unreachable("Unexpected sample count for fast clear");
       }
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index 36c3b26..75ce2b9 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -138,10 +138,17 @@ intel_get_non_msrt_mcs_alignment(struct brw_context *brw,
       unreachable("Non-MSRT MCS requires X or Y tiling");
       /* In release builds, fall through */
    case I915_TILING_Y:
-      *width_px = 32 / mt->cpp;
-      *height = 4;
+      if (brw->gen >= 9) {
+         const int scale_factor = 16 / mt->cpp;
+         *width_px = 128 / scale_factor;
+         *height = 64;
+      } else {
+         *width_px = 32 / mt->cpp;
+         *height = 4;
+      }
       break;
    case I915_TILING_X:
+      assert(brw->gen < 9);
       *width_px = 64 / mt->cpp;
       *height = 2;
    }
-- 
2.3.0



More information about the mesa-dev mailing list