i965: Make sure we always compute valid index bounds before drawing.
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 28 Mar 2014 07:14:02 +0000 (08:14 +0100)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 28 Mar 2014 15:48:14 +0000 (08:48 -0700)
When doing software rendering (i.e. rendering to the selection buffer) we need
to make sure that we have valid index bounds before calling _tnl_draw_prims(),
otherwise we can crash.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59455
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_draw.c

index d684c172212f4bb553c7cb580a45d23608de767d..ef0f2737ca11aba0da07aa794168d199c87b7dad 100644 (file)
@@ -554,7 +554,8 @@ void brw_draw_prims( struct gl_context *ctx,
     * get the minimum and maximum of their index buffer so we know what range
     * to upload.
     */
-   if (!vbo_all_varyings_in_vbos(arrays) && !index_bounds_valid) {
+   if (!index_bounds_valid &&
+       (ctx->RenderMode != GL_RENDER || !vbo_all_varyings_in_vbos(arrays))) {
       perf_debug("Scanning index buffer to compute index buffer bounds.  "
                  "Use glDrawRangeElements() to avoid this.\n");
       vbo_get_minmax_indices(ctx, prims, ib, &min_index, &max_index, nr_prims);