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.pitoi...@gmail.com> CC: "11.1 11.2" <mesa-sta...@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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev