[Mesa-stable] [PATCH] nvc0: do not follow the push path for indexed draws

Samuel Pitoiset samuel.pitoiset at gmail.com
Wed Jun 8 17:08:27 UTC 2016


This fixes a lot of flickering in The Talos Principle on Fermi+
(tested on both GF119 and GK106). My guess is that some indices
and/or some vertex attributes are incorrectly set when emitting
data directly into the command stream rather than uploading a
user VBO.

The NV50 driver also doesn't use the push path for indexed draws
which makes confident enough with this fix. Furthermore, this
doesn't introduce any regressions with piglit.

As a side-effect, this also improves performance with The Talos
Principle (+~20% fps) and probably with other games which use indexed
draws. This is because uploading a user VBO is more efficient than
pushing data directly into the pushbuf.

There is still an issue in this game (sometimes walls become green),
but this seems to be totally unrelated to the first issue (disabling
the push path doesn't help here).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90513
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
CC: "11.1 11.2" <mesa-stable at lists.freedesktop.org>
---
 src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c
index 888c094..9e7395d 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c
@@ -948,7 +948,7 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
     * if index count is larger and we expect repeated vertices, suggest upload.
     */
    nvc0->vbo_push_hint =
-      !info->indirect && info->indexed &&
+      !info->indirect && !info->indexed &&
       (nvc0->vb_elt_limit >= (info->count * 2));
 
    /* Check whether we want to switch vertex-submission mode. */
-- 
2.8.3



More information about the mesa-stable mailing list