mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 07:08:04 +02:00
cso: add context cleanup code from st/mesa
This fixes a crash in nouveau which can't handle set_constant_buffer(PIPE_SHADER_TESS_*). Cc: 10.6 <mesa-stable@lists.freedesktop.org> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
4ee69a97bb
commit
e4201bb618
2 changed files with 7 additions and 6 deletions
|
|
@ -300,6 +300,8 @@ void cso_destroy_context( struct cso_context *ctx )
|
||||||
unsigned i, shader;
|
unsigned i, shader;
|
||||||
|
|
||||||
if (ctx->pipe) {
|
if (ctx->pipe) {
|
||||||
|
ctx->pipe->set_index_buffer(ctx->pipe, NULL);
|
||||||
|
|
||||||
ctx->pipe->bind_blend_state( ctx->pipe, NULL );
|
ctx->pipe->bind_blend_state( ctx->pipe, NULL );
|
||||||
ctx->pipe->bind_rasterizer_state( ctx->pipe, NULL );
|
ctx->pipe->bind_rasterizer_state( ctx->pipe, NULL );
|
||||||
|
|
||||||
|
|
@ -326,13 +328,18 @@ void cso_destroy_context( struct cso_context *ctx )
|
||||||
|
|
||||||
ctx->pipe->bind_depth_stencil_alpha_state( ctx->pipe, NULL );
|
ctx->pipe->bind_depth_stencil_alpha_state( ctx->pipe, NULL );
|
||||||
ctx->pipe->bind_fs_state( ctx->pipe, NULL );
|
ctx->pipe->bind_fs_state( ctx->pipe, NULL );
|
||||||
|
ctx->pipe->set_constant_buffer(ctx->pipe, PIPE_SHADER_FRAGMENT, 0, NULL);
|
||||||
ctx->pipe->bind_vs_state( ctx->pipe, NULL );
|
ctx->pipe->bind_vs_state( ctx->pipe, NULL );
|
||||||
|
ctx->pipe->set_constant_buffer(ctx->pipe, PIPE_SHADER_VERTEX, 0, NULL);
|
||||||
if (ctx->has_geometry_shader) {
|
if (ctx->has_geometry_shader) {
|
||||||
ctx->pipe->bind_gs_state(ctx->pipe, NULL);
|
ctx->pipe->bind_gs_state(ctx->pipe, NULL);
|
||||||
|
ctx->pipe->set_constant_buffer(ctx->pipe, PIPE_SHADER_GEOMETRY, 0, NULL);
|
||||||
}
|
}
|
||||||
if (ctx->has_tessellation) {
|
if (ctx->has_tessellation) {
|
||||||
ctx->pipe->bind_tcs_state(ctx->pipe, NULL);
|
ctx->pipe->bind_tcs_state(ctx->pipe, NULL);
|
||||||
|
ctx->pipe->set_constant_buffer(ctx->pipe, PIPE_SHADER_TESS_CTRL, 0, NULL);
|
||||||
ctx->pipe->bind_tes_state(ctx->pipe, NULL);
|
ctx->pipe->bind_tes_state(ctx->pipe, NULL);
|
||||||
|
ctx->pipe->set_constant_buffer(ctx->pipe, PIPE_SHADER_TESS_EVAL, 0, NULL);
|
||||||
}
|
}
|
||||||
ctx->pipe->bind_vertex_elements_state( ctx->pipe, NULL );
|
ctx->pipe->bind_vertex_elements_state( ctx->pipe, NULL );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -376,12 +376,6 @@ void st_destroy_context( struct st_context *st )
|
||||||
}
|
}
|
||||||
pipe_surface_reference(&st->state.framebuffer.zsbuf, NULL);
|
pipe_surface_reference(&st->state.framebuffer.zsbuf, NULL);
|
||||||
|
|
||||||
pipe->set_index_buffer(pipe, NULL);
|
|
||||||
|
|
||||||
for (i = 0; i < PIPE_SHADER_TYPES; i++) {
|
|
||||||
pipe->set_constant_buffer(pipe, i, 0, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
_mesa_delete_program_cache(st->ctx, st->pixel_xfer.cache);
|
_mesa_delete_program_cache(st->ctx, st->pixel_xfer.cache);
|
||||||
|
|
||||||
_vbo_DestroyContext(st->ctx);
|
_vbo_DestroyContext(st->ctx);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue