[Mesa-dev] [PATCH 20/20] st/mesa: remove out_num_textures from update_textures

Marek Olšák maraeo at gmail.com
Tue Nov 21 18:02:02 UTC 2017


From: Marek Olšák <marek.olsak at amd.com>

---
 src/mesa/state_tracker/st_atom_texture.c | 32 ++++++++++++--------------------
 1 file 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 105fa79..ce7755f 100644
--- a/src/mesa/state_tracker/st_atom_texture.c
+++ b/src/mesa/state_tracker/st_atom_texture.c
@@ -94,24 +94,23 @@ st_update_single_texture(struct st_context *st,
                                              glsl130_or_later,
                                              ignore_srgb_decode);
 }
 
 
 
 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;
    GLbitfield external_samplers_used = prog->ExternalSamplersUsed;
    GLuint unit;
 
    if (samplers_used == 0x0 && old_max == 0)
       return;
 
    unsigned num_textures = 0;
@@ -206,105 +205,98 @@ update_textures(struct st_context *st,
          break;
       }
 
       num_textures = MAX2(num_textures, extra + 1);
    }
 
    cso_set_sampler_views(st->cso_context,
                          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);
 }
 
 void
 st_update_vertex_textures(struct st_context *st)
 {
    const struct gl_context *ctx = st->ctx;
 
    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);
    }
 }
 
 
 void
 st_update_fragment_textures(struct st_context *st)
 {
    const struct gl_context *ctx = st->ctx;
 
    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);
 }
 
 
 void
 st_update_geometry_textures(struct st_context *st)
 {
    const struct gl_context *ctx = st->ctx;
 
    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);
    }
 }
 
 
 void
 st_update_tessctrl_textures(struct st_context *st)
 {
    const struct gl_context *ctx = st->ctx;
 
    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);
    }
 }
 
 
 void
 st_update_tesseval_textures(struct st_context *st)
 {
    const struct gl_context *ctx = st->ctx;
 
    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);
    }
 }
 
 
 void
 st_update_compute_textures(struct st_context *st)
 {
    const struct gl_context *ctx = st->ctx;
 
    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);
    }
 }
-- 
2.7.4



More information about the mesa-dev mailing list