[Mesa-dev] [PATCH 08/10] i965: Add a "sampler state index" parameter to update_sampler_state().

Paul Berry stereotype441 at gmail.com
Fri Aug 24 12:09:08 PDT 2012


On 24 August 2012 03:06, Kenneth Graunke <kenneth at whitecape.org> wrote:

> This represents the index into the sampler state table or sampler
> default color table (the two are identical).
>
> Right now, this is still the texture unit, but that will change shortly.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/brw_state.h            |  2 +-
>  src/mesa/drivers/dri/i965/brw_wm_sampler_state.c | 19 ++++++++++---------
>  src/mesa/drivers/dri/i965/gen7_sampler_state.c   |  6 +++---
>  3 files changed, 14 insertions(+), 13 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_state.h
> b/src/mesa/drivers/dri/i965/brw_state.h
> index 2540cd5..4e78fae 100644
> --- a/src/mesa/drivers/dri/i965/brw_state.h
> +++ b/src/mesa/drivers/dri/i965/brw_state.h
> @@ -225,7 +225,7 @@ void gen7_create_constant_surface(struct brw_context
> *brw,
>  uint32_t translate_wrap_mode(GLenum wrap, bool using_nearest);
>  void upload_default_color(struct brw_context *brw,
>                           struct gl_sampler_object *sampler,
> -                         int unit);
> +                         int unit, int ss_index);
>
>  /* gen6_sf_state.c */
>  uint32_t
> diff --git a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
> b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
> index 27f0d70..10deb1d 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
> @@ -80,7 +80,7 @@ translate_wrap_mode(GLenum wrap, bool using_nearest)
>   */
>  void
>  upload_default_color(struct brw_context *brw, struct gl_sampler_object
> *sampler,
> -                    int unit)
> +                    int unit, int ss_index)
>  {
>     struct intel_context *intel = &brw->intel;
>     struct gl_context *ctx = &intel->ctx;
> @@ -109,7 +109,7 @@ upload_default_color(struct brw_context *brw, struct
> gl_sampler_object *sampler,
>        struct gen5_sampler_default_color *sdc;
>
>        sdc = brw_state_batch(brw, AUB_TRACE_SAMPLER_DEFAULT_COLOR,
> -                           sizeof(*sdc), 32, &brw->wm.sdc_offset[unit]);
> +                           sizeof(*sdc), 32,
> &brw->wm.sdc_offset[ss_index]);
>
>        memset(sdc, 0, sizeof(*sdc));
>
> @@ -146,7 +146,7 @@ upload_default_color(struct brw_context *brw, struct
> gl_sampler_object *sampler,
>        struct brw_sampler_default_color *sdc;
>
>        sdc = brw_state_batch(brw, AUB_TRACE_SAMPLER_DEFAULT_COLOR,
> -                           sizeof(*sdc), 32, &brw->wm.sdc_offset[unit]);
> +                           sizeof(*sdc), 32,
> &brw->wm.sdc_offset[ss_index]);
>
>        COPY_4V(sdc->color, color);
>     }
> @@ -158,6 +158,7 @@ upload_default_color(struct brw_context *brw, struct
> gl_sampler_object *sampler,
>   */
>  static void brw_update_sampler_state(struct brw_context *brw,
>                                      int unit,
> +                                     int ss_index,
>                                      struct brw_sampler_state *sampler)
>  {
>     struct intel_context *intel = &brw->intel;
> @@ -300,20 +301,20 @@ static void brw_update_sampler_state(struct
> brw_context *brw,
>        sampler->ss3.non_normalized_coord = 1;
>     }
>
> -   upload_default_color(brw, gl_sampler, unit);
> +   upload_default_color(brw, gl_sampler, unit, ss_index);
>
>     if (intel->gen >= 6) {
> -      sampler->ss2.default_color_pointer = brw->wm.sdc_offset[unit] >> 5;
> +      sampler->ss2.default_color_pointer = brw->wm.sdc_offset[ss_index]
> >> 5;
>     } else {
>        /* reloc */
>        sampler->ss2.default_color_pointer = (intel->batch.bo->offset +
> -                                           brw->wm.sdc_offset[unit]) >> 5;
> +                                           brw->wm.sdc_offset[ss_index])
> >> 5;
>
>        drm_intel_bo_emit_reloc(intel->batch.bo,
>                               brw->sampler.offset +
> -                             unit * sizeof(struct brw_sampler_state) +
> +                             ss_index * sizeof(struct brw_sampler_state) +
>                               offsetof(struct brw_sampler_state, ss2),
> -                             intel->batch.bo, brw->wm.sdc_offset[unit],
> +                             intel->batch.bo,
> brw->wm.sdc_offset[ss_index],
>                               I915_GEM_DOMAIN_SAMPLER, 0);
>     }
>
> @@ -351,7 +352,7 @@ brw_upload_samplers(struct brw_context *brw)
>
>     for (i = 0; i < brw->sampler.count; i++) {
>        if (ctx->Texture.Unit[i]._ReallyEnabled)
> -        brw_update_sampler_state(brw, i, &samplers[i]);
> +        brw_update_sampler_state(brw, i, i, &samplers[i]);
>     }
>
>     brw->state.dirty.cache |= CACHE_NEW_SAMPLER;
> diff --git a/src/mesa/drivers/dri/i965/gen7_sampler_state.c
> b/src/mesa/drivers/dri/i965/gen7_sampler_state.c
> index 3c8daf9..8969119 100644
> --- a/src/mesa/drivers/dri/i965/gen7_sampler_state.c
> +++ b/src/mesa/drivers/dri/i965/gen7_sampler_state.c
> @@ -33,7 +33,7 @@
>   * Sets the sampler state for a single unit.
>   */
>  static void
> -gen7_update_sampler_state(struct brw_context *brw, int unit,
> +gen7_update_sampler_state(struct brw_context *brw, int unit, int ss_index,
>                           struct gen7_sampler_state *sampler)
>  {
>     struct intel_context *intel = &brw->intel;
> @@ -168,7 +168,7 @@ gen7_update_sampler_state(struct brw_context *brw, int
> unit,
>        sampler->ss3.non_normalized_coord = 1;
>     }
>
> -   upload_default_color(brw, gl_sampler, unit);
> +   upload_default_color(brw, gl_sampler, unit, ss_index);
>
>     sampler->ss2.default_color_pointer = brw->wm.sdc_offset[unit] >> 5;
>

I think this line needs to change to "...brw->wm.sdc_offset[ss_index] >> 5".

With that fixed, this patch is:

Reviewed-by: Paul Berry <stereotype441 at gmail.com>


>
> @@ -206,7 +206,7 @@ gen7_upload_samplers(struct brw_context *brw)
>
>     for (i = 0; i < brw->sampler.count; i++) {
>        if (ctx->Texture.Unit[i]._ReallyEnabled)
> -        gen7_update_sampler_state(brw, i, &samplers[i]);
> +        gen7_update_sampler_state(brw, i, i, &samplers[i]);
>     }
>
>     brw->state.dirty.cache |= CACHE_NEW_SAMPLER;
> --
> 1.7.11.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120824/89f22455/attachment.html>


More information about the mesa-dev mailing list