aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/state_tracker/st_context.c
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib/src/mesa/state_tracker/st_context.c')
-rw-r--r--mesalib/src/mesa/state_tracker/st_context.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/mesalib/src/mesa/state_tracker/st_context.c b/mesalib/src/mesa/state_tracker/st_context.c
index 17235132e..9fd6caece 100644
--- a/mesalib/src/mesa/state_tracker/st_context.c
+++ b/mesalib/src/mesa/state_tracker/st_context.c
@@ -136,6 +136,8 @@ st_destroy_context_priv(struct st_context *st)
if (st->constbuf_uploader) {
u_upload_destroy(st->constbuf_uploader);
}
+
+ cso_destroy_context(st->cso_context);
free( st );
}
@@ -271,6 +273,8 @@ st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe,
*/
st->ctx->Point.MaxSize = MAX2(ctx->Const.MaxPointSize,
ctx->Const.MaxPointSizeAA);
+ /* For vertex shaders, make sure not to emit saturate when SM 3.0 is not supported */
+ ctx->Const.ShaderCompilerOptions[MESA_SHADER_VERTEX].EmitNoSat = !st->has_shader_model3;
_mesa_compute_version(ctx);
@@ -346,15 +350,11 @@ destroy_tex_sampler_cb(GLuint id, void *data, void *userData)
void st_destroy_context( struct st_context *st )
{
struct pipe_context *pipe = st->pipe;
- struct cso_context *cso = st->cso_context;
struct gl_context *ctx = st->ctx;
GLuint i;
_mesa_HashWalk(ctx->Shared->TexObjects, destroy_tex_sampler_cb, st);
- /* need to unbind and destroy CSO objects before anything else */
- cso_release_all(st->cso_context);
-
st_reference_fragprog(st, &st->fp, NULL);
st_reference_geomprog(st, &st->gp, NULL);
st_reference_vertprog(st, &st->vp, NULL);
@@ -384,8 +384,6 @@ void st_destroy_context( struct st_context *st )
st_destroy_context_priv(st);
st = NULL;
- cso_destroy_context(cso);
-
pipe->destroy( pipe );
free(ctx);