i965/fs: Properly handle explicit depth in SIMD16 with dual-source blend
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 25 May 2015 16:31:55 +0000 (09:31 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 28 May 2015 20:33:09 +0000 (13:33 -0700)
Cc: "10.6" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90629
Tested-by: Markus Wick <markus@selfnet.de>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp

index ead77686640edbbf4364c00dc01c77395fd441a9..314136c7819b302d0286e23b1a244e7a96f71363 100644 (file)
@@ -3711,7 +3711,11 @@ fs_visitor::emit_single_fb_write(fs_reg color0, fs_reg color1,
       if (prog->OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) {
         /* Hand over gl_FragDepth. */
         assert(this->frag_depth.file != BAD_FILE);
-         sources[length] = this->frag_depth;
+         if (exec_size < dispatch_width) {
+            sources[length] = half(this->frag_depth, use_2nd_half);
+         } else {
+            sources[length] = this->frag_depth;
+         }
       } else {
         /* Pass through the payload depth. */
          sources[length] = fs_reg(brw_vec8_grf(payload.source_depth_reg, 0));