diff options
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r-- | src/mesa/state_tracker/st_atom_texture.c | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c index 105fa79de02..ce7755f0c58 100644 --- a/src/mesa/state_tracker/st_atom_texture.c +++ b/src/mesa/state_tracker/st_atom_texture.c @@ -101,10 +101,9 @@ static void update_textures(struct st_context *st, enum pipe_shader_type shader_stage, const struct gl_program *prog, - struct pipe_sampler_view **sampler_views, - unsigned *out_num_textures) + struct pipe_sampler_view **sampler_views) { - const GLuint old_max = *out_num_textures; + const GLuint old_max = st->state.num_sampler_views[shader_stage]; GLbitfield samplers_used = prog->SamplersUsed; GLbitfield texel_fetch_samplers = prog->info.textures_used_by_txf; GLbitfield free_slots = ~prog->SamplersUsed; @@ -213,21 +212,20 @@ update_textures(struct st_context *st, shader_stage, num_textures, sampler_views); - *out_num_textures = num_textures; + st->state.num_sampler_views[shader_stage] = num_textures; } /* Same as update_textures, but don't store the views in st_context. */ static void update_textures_local(struct st_context *st, enum pipe_shader_type shader_stage, - const struct gl_program *prog, - unsigned *out_num_textures) + const struct gl_program *prog) { struct pipe_sampler_view *local_views[PIPE_MAX_SAMPLERS] = {0}; - update_textures(st, shader_stage, prog, local_views, out_num_textures); + update_textures(st, shader_stage, prog, local_views); - unsigned num = *out_num_textures; + unsigned num = st->state.num_sampler_views[shader_stage]; for (unsigned i = 0; i < num; i++) pipe_sampler_view_reference(&local_views[i], NULL); } @@ -239,8 +237,7 @@ st_update_vertex_textures(struct st_context *st) if (ctx->Const.Program[MESA_SHADER_VERTEX].MaxTextureImageUnits > 0) { update_textures_local(st, PIPE_SHADER_VERTEX, - ctx->VertexProgram._Current, - &st->state.num_sampler_views[PIPE_SHADER_VERTEX]); + ctx->VertexProgram._Current); } } @@ -253,8 +250,7 @@ st_update_fragment_textures(struct st_context *st) update_textures(st, PIPE_SHADER_FRAGMENT, ctx->FragmentProgram._Current, - st->state.frag_sampler_views, - &st->state.num_sampler_views[PIPE_SHADER_FRAGMENT]); + st->state.frag_sampler_views); } @@ -265,8 +261,7 @@ st_update_geometry_textures(struct st_context *st) if (ctx->GeometryProgram._Current) { update_textures_local(st, PIPE_SHADER_GEOMETRY, - ctx->GeometryProgram._Current, - &st->state.num_sampler_views[PIPE_SHADER_GEOMETRY]); + ctx->GeometryProgram._Current); } } @@ -278,8 +273,7 @@ st_update_tessctrl_textures(struct st_context *st) if (ctx->TessCtrlProgram._Current) { update_textures_local(st, PIPE_SHADER_TESS_CTRL, - ctx->TessCtrlProgram._Current, - &st->state.num_sampler_views[PIPE_SHADER_TESS_CTRL]); + ctx->TessCtrlProgram._Current); } } @@ -291,8 +285,7 @@ st_update_tesseval_textures(struct st_context *st) if (ctx->TessEvalProgram._Current) { update_textures_local(st, PIPE_SHADER_TESS_EVAL, - ctx->TessEvalProgram._Current, - &st->state.num_sampler_views[PIPE_SHADER_TESS_EVAL]); + ctx->TessEvalProgram._Current); } } @@ -304,7 +297,6 @@ st_update_compute_textures(struct st_context *st) if (ctx->ComputeProgram._Current) { update_textures_local(st, PIPE_SHADER_COMPUTE, - ctx->ComputeProgram._Current, - &st->state.num_sampler_views[PIPE_SHADER_COMPUTE]); + ctx->ComputeProgram._Current); } } |