i915g: Use the non-vbuf code path by default to fix index overflows.
authorEmma Anholt <emma@anholt.net>
Sat, 25 Sep 2021 22:42:06 +0000 (15:42 -0700)
committerMarge Bot <eric+marge@anholt.net>
Mon, 27 Sep 2021 18:36:10 +0000 (18:36 +0000)
commit7371efdb3abef6f80ee2b898e3d50ae0349a508d
tree1fd6c739106e60cff2c26b9aaf23a92096c238c2
parent2aa8317e06649edf9ac2d86ed7ef8ac6c6af2c53
i915g: Use the non-vbuf code path by default to fix index overflows.

We were assertion failing on some large draws due to indices >16bits,
despite asking draw to limit the max indices.  I haven't managed to track
it down, so flip us back to the older, non-index drawing path that doesn't
hit this bug until it can get fixed.  Leave an I915_DEBUG=vbuf flag around
so we can look into this later.

This is a pretty big performance hit for vertex shaders.  Using glmark2 -b
build:use-vbo=true:

i915g-vbuf:     211 fps
i915g-nonvbuf:  185 fps
i915c:          41 fps

Given how massively better i915g still is than i915c (llvmpipe VS instead
of the classic swrast interpreter), I think it's still worth it to get
i915g correct before we fix this perf regression.

Fixes: #4971
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13052>
src/gallium/drivers/i915/ci/deqp-i915-g33-fails.txt
src/gallium/drivers/i915/ci/piglit-i915-g33-fails.txt
src/gallium/drivers/i915/ci/traces-i915.yml
src/gallium/drivers/i915/i915_context.c
src/gallium/drivers/i915/i915_debug.c
src/gallium/drivers/i915/i915_debug.h