diff options
Diffstat (limited to 'src/gallium/auxiliary/cso_cache')
-rw-r--r-- | src/gallium/auxiliary/cso_cache/cso_context.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c index 6642c454e56..4d7c3871256 100644 --- a/src/gallium/auxiliary/cso_cache/cso_context.c +++ b/src/gallium/auxiliary/cso_cache/cso_context.c @@ -1221,6 +1221,7 @@ cso_restore_sampler_views(struct cso_context *ctx, unsigned shader_stage) { struct sampler_info *info = &ctx->samplers[shader_stage]; unsigned i, nr_saved = info->nr_views_saved; + unsigned num; for (i = 0; i < nr_saved; i++) { pipe_sampler_view_reference(&info->views[i], NULL); @@ -1232,16 +1233,18 @@ cso_restore_sampler_views(struct cso_context *ctx, unsigned shader_stage) pipe_sampler_view_reference(&info->views[i], NULL); } + num = MAX2(info->nr_views, nr_saved); + /* bind the old/saved sampler views */ switch (shader_stage) { case PIPE_SHADER_FRAGMENT: - ctx->pipe->set_fragment_sampler_views(ctx->pipe, nr_saved, info->views); + ctx->pipe->set_fragment_sampler_views(ctx->pipe, num, info->views); break; case PIPE_SHADER_VERTEX: - ctx->pipe->set_vertex_sampler_views(ctx->pipe, nr_saved, info->views); + ctx->pipe->set_vertex_sampler_views(ctx->pipe, num, info->views); break; case PIPE_SHADER_GEOMETRY: - ctx->pipe->set_geometry_sampler_views(ctx->pipe, nr_saved, info->views); + ctx->pipe->set_geometry_sampler_views(ctx->pipe, num, info->views); break; default: assert(!"bad shader type in cso_restore_sampler_views()"); |