svga: Fix the index buffer rebind regression
authorCharmaine Lee <charmainel@vmware.com>
Tue, 26 Jan 2016 19:12:09 +0000 (11:12 -0800)
committerBrian Paul <brianp@vmware.com>
Mon, 21 Mar 2016 19:37:40 +0000 (13:37 -0600)
The index buffer handle saved in the hw_state structure could
be invalid after the index buffer is destroyed. Instead of
rebinding the index buffer using the saved index buffer handle,
we will reset the index buffer handle in the hw_state structure
to force resending of the index buffer.

Fixes bug 1593320

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/drivers/svga/svga_draw.c

index 96f82381708a58824248c9151e2c15daa8610af6..0b9ea889afabe0fa99f222734f9bed7e7e249ff5 100644 (file)
@@ -464,13 +464,8 @@ draw_vgpu10(struct svga_hwtnl *hwtnl,
       if (ret != PIPE_OK)
          return ret;
 
-      /* Rebind index buffer */
-      if (svga->state.hw_draw.ib) {
-         struct svga_winsys_context *swc = svga->swc;
-         ret = swc->resource_rebind(swc, svga->state.hw_draw.ib, NULL, SVGA_RELOC_READ);
-         if (ret != PIPE_OK)
-            return ret;
-      }
+      /* Force rebinding the index buffer when needed */
+      svga->state.hw_draw.ib = NULL;
    }
 
    ret = validate_sampler_resources(svga);