[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