diff options
author | Brian Paul <[email protected]> | 2017-06-22 12:58:39 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2017-06-22 13:33:48 -0600 |
commit | 041f8ae9f6bab39361263f6c767ea5294f1aa011 (patch) | |
tree | 9003dcf741439eebfb18ea859c6b6ba928a8813d /src/gallium/drivers/svga | |
parent | 3fbdab8778d3b55ed6053a3781e92aeff85ca174 (diff) |
svga: check return value from svga_set_shader( SVGA3D_SHADERTYPE_GS, NULL)
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: [email protected]
Reviewed-by: Charmaine Lee <[email protected]>
Diffstat (limited to 'src/gallium/drivers/svga')
-rw-r--r-- | src/gallium/drivers/svga/svga_state_gs.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gallium/drivers/svga/svga_state_gs.c b/src/gallium/drivers/svga/svga_state_gs.c index cff11ad5c3f..217463882f1 100644 --- a/src/gallium/drivers/svga/svga_state_gs.c +++ b/src/gallium/drivers/svga/svga_state_gs.c @@ -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; |