Mesa (12.0): i965: Fix GPU hang related to multiple render targets and alpha testing
Emil Velikov
evelikov at kemper.freedesktop.org
Fri Dec 2 19:58:34 UTC 2016
Module: Mesa
Branch: 12.0
Commit: a7b662633e5e33908e0821c4ba6cd00edecc44c5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a7b662633e5e33908e0821c4ba6cd00edecc44c5
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date: Mon Oct 24 16:03:00 2016 -0700
i965: Fix GPU hang related to multiple render targets and alpha testing
This patch should have been the part of commit e592f7df.
In a situation when there are multiple render targets with alpha testing
enabled, if fragment shader doesn't write to draw buffer zero, it causes
the GPU hang on SKL. No GPU hang is seen on HSW. Simulator gives a
warning for all gen6+ h/w:
"Illegal render target write message length 0xa expected 0xc"
This patch fixes the GPU hang as well as the simulator warning with
new piglit test fbo-mrt-alphatest-no-buffer-zero-write:
https://patchwork.freedesktop.org/patch/118212
No regressions in Jenkins CI system.
Cc: "12.0 13.0" <mesa-stable at lists.freedesktop.org>
Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
Reviewed-by: Ben Widawsky <ben at bwidawsk.net>
(cherry picked from commit b9df2251c17e3ce52fa55c81f492591e08c3ee04)
---
src/mesa/drivers/dri/i965/brw_fs.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 2af42e0..33fd372 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -3885,6 +3885,12 @@ lower_fb_write_logical_send(const fs_builder &bld, fs_inst *inst,
*/
setup_color_payload(bld, key, &sources[length], src0_alpha, 1);
length++;
+ } else if (key->replicate_alpha && inst->target != 0) {
+ /* Handle the case when fragment shader doesn't write to draw buffer
+ * zero. No need to call setup_color_payload() for src0_alpha because
+ * alpha value will be undefined.
+ */
+ length++;
}
setup_color_payload(bld, key, &sources[length], color0, components);
More information about the mesa-commit
mailing list