summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2014-07-21 16:17:46 -0700
committerCarl Worth <cworth@cworth.org>2014-07-30 22:09:45 -0700
commit37114cc2eb5321e17ce3c099fe33bda5f17ca314 (patch)
treed339ff9d5742ce3748eafb6eb54d3c7b3b2d983e
parentf876eae80b7dc0f9a6ff0cba86bbd47e276bc43e (diff)
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> (cherry picked from commit d4d886a0bc86eb2045b0327fe147eef3c400ffba) Conflicts: src/mesa/drivers/dri/i965/gen8_fs_generator.cpp
-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 deb3b81fd0a..af830490116 100644
--- a/src/mesa/drivers/dri/i965/gen8_fs_generator.cpp
+++ b/src/mesa/drivers/dri/i965/gen8_fs_generator.cpp
@@ -113,10 +113,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 == c->key.nr_color_regions - 1) || !c->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 =