diff options
author | Stuart Abercrombie <[email protected]> | 2012-06-29 16:31:24 -0700 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2012-07-04 03:48:29 +0200 |
commit | 95ce454c8c4397a67aa038d91667882e413314d3 (patch) | |
tree | 7d348f7b5cfc26ef53f86cfd05aa3c559a47ec41 /src/gallium/auxiliary | |
parent | 567fcd2eb9bf31d5abe9e78677a0c35e4d07e420 (diff) |
gallium/util: Save and restore vertex buffer state in util_gen_mipmap.
Calling glGenerateMipmap could overwrite vertex buffer state, leading
to incorrect rendering or crashes depending on the Gallium driver.
This was happening on WebGL Conformance test texture-size.
Before 784dd51198433e5c299da4a7742c68d21d68d1c1 this was covered up
by redundant vertex buffer validation.
Reviewed-by: Stéphane Marchesin <[email protected]>
Signed-off-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/util/u_gen_mipmap.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/util/u_gen_mipmap.c b/src/gallium/auxiliary/util/u_gen_mipmap.c index 82474cd7bad..2ff1af70a59 100644 --- a/src/gallium/auxiliary/util/u_gen_mipmap.c +++ b/src/gallium/auxiliary/util/u_gen_mipmap.c @@ -1556,6 +1556,7 @@ util_gen_mipmap(struct gen_mipmap_state *ctx, cso_save_geometry_shader(ctx->cso); cso_save_viewport(ctx->cso); cso_save_vertex_elements(ctx->cso); + cso_save_vertex_buffers(ctx->cso); /* bind our state */ cso_set_blend(ctx->cso, &ctx->blend); @@ -1679,4 +1680,5 @@ util_gen_mipmap(struct gen_mipmap_state *ctx, cso_restore_viewport(ctx->cso); cso_restore_vertex_elements(ctx->cso); cso_restore_stream_outputs(ctx->cso); + cso_restore_vertex_buffers(ctx->cso); } |