From c5fe7d063cc886ef1307f8ea58a301debed12fba Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Tue, 9 Jul 2013 15:17:15 -0700 Subject: [PATCH] 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 --- src/mesa/drivers/dri/i965/brw_program.h | 1 + src/mesa/drivers/dri/i965/brw_vs.c | 3 ++- src/mesa/drivers/dri/i965/brw_wm.c | 6 ++++-- 3 files changed, 7 insertions(+), 3 deletions(-) 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 */ /* -- 2.30.2