summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2014-07-21 16:17:46 -0700
committerKenneth Graunke <kenneth@whitecape.org>2014-07-23 15:44:37 -0700
commitd4d886a0bc86eb2045b0327fe147eef3c400ffba (patch)
tree38f8ee13ec73af9824a429006d747e0d6c8bfd6a /src/mesa/drivers/dri
parent36a4a6bbdca0c30e16d56e6b406ea7c94831048f (diff)
downloadexternal_mesa3d-d4d886a0bc86eb2045b0327fe147eef3c400ffba.zip
external_mesa3d-d4d886a0bc86eb2045b0327fe147eef3c400ffba.tar.gz
external_mesa3d-d4d886a0bc86eb2045b0327fe147eef3c400ffba.tar.bz2
i965/fs: Set LastRT on the final FB write on Broadwell.
In Piglit's EXT_framebuffer_multisample/alpha-to-coverage-dual-src-blend test, key->nr_color_regions == 2, but the dual source blend FB write has ir->target set to 0. So we failed to set "Last Render Target Select" on any FB write message. We only emit one FB write per render target, so my comment about setting LastRT on every FB write directed at the last color region is a bit... misinformed. According to the documentation, depth buffer writes and scoreboard updates happen on the FB write with LastRT set, so I believe we want to set it only once. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Matt Turner <mattst88@gmail.com> Cc: "10.2" <mesa-stable@lists.freedesktop.org>
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r--src/mesa/drivers/dri/i965/gen8_fs_generator.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/gen8_fs_generator.cpp b/src/mesa/drivers/dri/i965/gen8_fs_generator.cpp
index 2d745fd..4f0cf70 100644
--- a/src/mesa/drivers/dri/i965/gen8_fs_generator.cpp
+++ b/src/mesa/drivers/dri/i965/gen8_fs_generator.cpp
@@ -116,10 +116,8 @@ gen8_fs_generator::generate_fb_write(fs_inst *ir)
uint32_t msg_control = msg_type;
- /* "Last Render Target Select" must be set on all writes to the last of
- * the render targets (if using MRT), or always for a single RT scenario.
- */
- if ((ir->target == key->nr_color_regions - 1) || !key->nr_color_regions)
+ /* Set "Last Render Target Select" on the final FB write. */
+ if (ir->eot)
msg_control |= (1 << 4); /* Last Render Target Select */
uint32_t surf_index =