From: Kenneth Graunke Date: Tue, 9 Jul 2013 22:17:15 +0000 (-0700) Subject: i965: Shorten sampler loops in key setup. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c5fe7d063cc886ef1307f8ea58a301debed12fba;p=mesa.git i965: Shorten sampler loops in key setup. Now that we have the number of samplers available, we don't need to iterate over all 16. This should be particularly helpful for vertex shaders. Signed-off-by: Kenneth Graunke Reviewed-by: Paul Berry --- diff --git a/src/mesa/drivers/dri/i965/brw_program.h b/src/mesa/drivers/dri/i965/brw_program.h index 2a944a0858a..a2997e77036 100644 --- a/src/mesa/drivers/dri/i965/brw_program.h +++ b/src/mesa/drivers/dri/i965/brw_program.h @@ -44,6 +44,7 @@ struct brw_sampler_prog_key_data { void brw_populate_sampler_prog_key_data(struct gl_context *ctx, const struct gl_program *prog, + unsigned sampler_count, struct brw_sampler_prog_key_data *key); bool brw_debug_recompile_sampler_key(struct brw_context *brw, const struct brw_sampler_prog_key_data *old_key, diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index b26a7a5f01b..9e18ef0119a 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -450,7 +450,8 @@ static void brw_upload_vs_prog(struct brw_context *brw) } /* _NEW_TEXTURE */ - brw_populate_sampler_prog_key_data(ctx, prog, &key.base.tex); + brw_populate_sampler_prog_key_data(ctx, prog, brw->vs.sampler_count, + &key.base.tex); /* BRW_NEW_VERTICES */ if (brw->gen < 8 && !brw->is_haswell) { diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index 10ca5ff84a5..3df2b7df4ce 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -298,11 +298,12 @@ brw_wm_debug_recompile(struct brw_context *brw, void brw_populate_sampler_prog_key_data(struct gl_context *ctx, const struct gl_program *prog, + unsigned sampler_count, struct brw_sampler_prog_key_data *key) { struct brw_context *brw = brw_context(ctx); - for (int s = 0; s < MAX_SAMPLERS; s++) { + for (int s = 0; s < sampler_count; s++) { key->swizzles[s] = SWIZZLE_NOOP; if (!(prog->SamplersUsed & (1 << s))) @@ -425,7 +426,8 @@ static void brw_wm_populate_key( struct brw_context *brw, key->clamp_fragment_color = ctx->Color._ClampFragmentColor; /* _NEW_TEXTURE */ - brw_populate_sampler_prog_key_data(ctx, prog, &key->tex); + brw_populate_sampler_prog_key_data(ctx, prog, brw->wm.sampler_count, + &key->tex); /* _NEW_BUFFERS */ /*