[Mesa-dev] [PATCH v2] i965/skl: Break down SIMD16 3-source instructions when required.

Neil Roberts neil at linux.intel.com
Thu Mar 19 11:45:49 PDT 2015


From: Kenneth Graunke <kenneth at whitecape.org>

Several steppings of Skylake fail when using SIMD16 with 3-source
instructions (such as MAD).

This implements WaDisableSIMD16On3SrcInstr and fixes ~190 Piglit
tests.

Based on a patch by Neil Roberts.
---
 src/mesa/drivers/dri/i965/brw_shader.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp
index fa1394a..404a13f 100644
--- a/src/mesa/drivers/dri/i965/brw_shader.cpp
+++ b/src/mesa/drivers/dri/i965/brw_shader.cpp
@@ -396,6 +396,12 @@ brw_texture_offset(struct gl_context *ctx, int *offsets,
 bool
 brw_supports_simd16_3src(const struct brw_context *brw)
 {
+   /* WaDisableSIMD16On3SrcInstr: 3-source instructions don't work in SIMD16
+    * on a few steppings of Skylake.
+    */
+   if (brw->gen == 9)
+      return brw->revision != 2 && brw->revision != 3 && brw->revision != -1;
+
    return brw->is_haswell || brw->gen >= 8;
 }
 
-- 
1.9.3



More information about the mesa-dev mailing list