swr: Don't crash when encountering a VBO with stride = 0.
authorBruce Cherniak <bruce.cherniak@intel.com>
Thu, 15 Jun 2017 16:24:47 +0000 (11:24 -0500)
committerTim Rowley <timothy.o.rowley@intel.com>
Fri, 16 Jun 2017 18:45:24 +0000 (13:45 -0500)
commit80b587ba2722ef30d262bff3d0d2a00c0dfb8b80
treecbfbc4ac4374a80cd226c8870dfa50118c50d238
parentc07271fef095164c8bcfb54fdc95567c3774a866
swr: Don't crash when encountering a VBO with stride = 0.

The swr driver uses vertex_buffer->stride to determine the number
of elements in a VBO. A recent change to the state-tracker made it
possible for VBO's with stride=0. This resulted in a divide by zero
crash in the driver. The solution is to use the pre-calculated vertex
element stream_pitch in this case.

This patch fixes the crash in a number of piglit and VTK tests introduced
by 17f776c27be266f2.

There are several VTK tests that still crash and need proper handling of
vertex_buffer_index.  This will come in a follow-on patch.

v2: Correctly update all parameters for VBO constants (stride = 0).
    Also fixes the remaining crashes/regressions that v1 did
    not address, without touching vertex_buffer_index.

Reviewed-by: Tim Rowley <timothy.o.rowley@intel.com>
src/gallium/drivers/swr/swr_state.cpp