Now that we are letting some instructions through without being fully scalarized we have to make sure that we do scalarize any that have XY / ZW writemasks, since this don't have native support. --- src/mesa/drivers/dri/i965/brw_vec4.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index d0de464..6a814a3 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -2209,6 +2209,15 @@ vec4_visitor::scalarize_df() if (!is_double) continue; + bool skip_lowering = true; + + /* XY and ZW writemasks operate in 32-bit, which means that they don't + * have a native 64-bit representation and they should always be split. + */ + if (inst->dst.writemask == WRITEMASK_XY || + inst->dst.writemask == WRITEMASK_ZW) + skip_lowering = false; + /* Don't scalarize instruccions that only use identity swizzles on * non-uniform registers (vstride != 0). Identity swizzles don't require * any special handling and just work as intended. The only exception @@ -2231,7 +2240,6 @@ vec4_visitor::scalarize_df() * For more details see: * https://bugs.freedesktop.org/show_bug.cgi?id=92760#c82 */ - bool skip_lowering = true; for (unsigned i = 0; i < 3; i++) { if (inst->src[i].file == BAD_FILE) continue; -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev