[Mesa-dev] [PATCH 2/2] nvc0: get rid of nvc0_stage_sampler_states_bind_range()

Ilia Mirkin imirkin at alum.mit.edu
Sun Sep 18 21:54:18 UTC 2016


Series is

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

On Sun, Sep 18, 2016 at 5:48 PM, Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
> Same thing as nvc0_stage_set_sampler_views_range().
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/gallium/drivers/nouveau/nvc0/nvc0_state.c | 83 +++------------------------
>  1 file changed, 9 insertions(+), 74 deletions(-)
>
> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_state.c b/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
> index 5cbdda9..aac296c 100644
> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
> @@ -451,87 +451,22 @@ nvc0_stage_sampler_states_bind(struct nvc0_context *nvc0,
>     }
>
>     nvc0->num_samplers[s] = nr;
> -
> -   nvc0->dirty_3d |= NVC0_NEW_3D_SAMPLERS;
> -}
> -
> -static void
> -nvc0_stage_sampler_states_bind_range(struct nvc0_context *nvc0,
> -                                     unsigned s,
> -                                     unsigned start, unsigned nr, void **cso)
> -{
> -   const unsigned end = start + nr;
> -   int last_valid = -1;
> -   unsigned i;
> -
> -   if (cso) {
> -      for (i = start; i < end; ++i) {
> -         const unsigned p = i - start;
> -         if (cso[p])
> -            last_valid = i;
> -         if (cso[p] == nvc0->samplers[s][i])
> -            continue;
> -         nvc0->samplers_dirty[s] |= 1 << i;
> -
> -         if (nvc0->samplers[s][i])
> -            nvc0_screen_tsc_unlock(nvc0->screen, nvc0->samplers[s][i]);
> -         nvc0->samplers[s][i] = cso[p];
> -      }
> -   } else {
> -      for (i = start; i < end; ++i) {
> -         if (nvc0->samplers[s][i]) {
> -            nvc0_screen_tsc_unlock(nvc0->screen, nvc0->samplers[s][i]);
> -            nvc0->samplers[s][i] = NULL;
> -            nvc0->samplers_dirty[s] |= 1 << i;
> -         }
> -      }
> -   }
> -
> -   if (nvc0->num_samplers[s] <= end) {
> -      if (last_valid < 0) {
> -         for (i = start; i && !nvc0->samplers[s][i - 1]; --i);
> -         nvc0->num_samplers[s] = i;
> -      } else {
> -         nvc0->num_samplers[s] = last_valid + 1;
> -      }
> -   }
>  }
>
>  static void
>  nvc0_bind_sampler_states(struct pipe_context *pipe,
>                           enum pipe_shader_type shader,
> -                         unsigned start, unsigned nr, void **s)
> +                         unsigned start, unsigned nr, void **samplers)
>  {
> -   switch (shader) {
> -   case PIPE_SHADER_VERTEX:
> -      assert(start == 0);
> -      nvc0_stage_sampler_states_bind(nvc0_context(pipe), 0, nr, s);
> -      break;
> -   case PIPE_SHADER_TESS_CTRL:
> -      assert(start == 0);
> -      nvc0_stage_sampler_states_bind(nvc0_context(pipe), 1, nr, s);
> -      break;
> -   case PIPE_SHADER_TESS_EVAL:
> -      assert(start == 0);
> -      nvc0_stage_sampler_states_bind(nvc0_context(pipe), 2, nr, s);
> -      break;
> -   case PIPE_SHADER_GEOMETRY:
> -      assert(start == 0);
> -      nvc0_stage_sampler_states_bind(nvc0_context(pipe), 3, nr, s);
> -      break;
> -   case PIPE_SHADER_FRAGMENT:
> -      assert(start == 0);
> -      nvc0_stage_sampler_states_bind(nvc0_context(pipe), 4, nr, s);
> -      break;
> -   case PIPE_SHADER_COMPUTE:
> -      nvc0_stage_sampler_states_bind_range(nvc0_context(pipe), 5,
> -                                           start, nr, s);
> +   const unsigned s = nvc0_shader_stage(shader);
> +
> +   assert(start == 0);
> +   nvc0_stage_sampler_states_bind(nvc0_context(pipe), s, nr, samplers);
> +
> +   if (s == 5)
>        nvc0_context(pipe)->dirty_cp |= NVC0_NEW_CP_SAMPLERS;
> -      break;
> -   default:
> -      assert(!"unexpected shader type");
> -      break;
> -   }
> +   else
> +      nvc0_context(pipe)->dirty_3d |= NVC0_NEW_3D_SAMPLERS;
>  }
>
>
> --
> 2.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list