svga: check return value from svga_set_shader( SVGA3D_SHADERTYPE_GS, NULL)
authorBrian Paul <brianp@vmware.com>
Thu, 22 Jun 2017 18:58:39 +0000 (12:58 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 22 Jun 2017 19:33:48 +0000 (13:33 -0600)
If the call fails we need to flush the command buffer and retry.  In this
case, we were failing to unbind the GS which led to subsequent errors.

This fixes a bug replaying a Cinebench R15 apitrace in a Linux guest.
VMware bug 1894451

cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/drivers/svga/svga_state_gs.c

index cff11ad5c3f561f68beabecbf2ea33857df6ff8f..217463882f129900db2b133968971c281ee31bff 100644 (file)
@@ -190,6 +190,8 @@ emit_hw_gs(struct svga_context *svga, unsigned dirty)
           *  Needs to unbind the geometry shader.
           */
          ret = svga_set_shader(svga, SVGA3D_SHADERTYPE_GS, NULL);
+         if (ret != PIPE_OK)
+            goto done;
          svga->state.hw_draw.gs = NULL;
       }
       goto done;