[Mesa-dev] [PATCH 10/10] i965: Shorten sampler loops in key setup.
Kenneth Graunke
kenneth at whitecape.org
Wed Aug 14 18:55:16 PDT 2013
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 <kenneth at whitecape.org>
---
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 2a944a0..a2997e7 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 7df93c2..7d67edd 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.c
+++ b/src/mesa/drivers/dri/i965/brw_vs.c
@@ -455,7 +455,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 10ca5ff..3df2b7d 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 */
/*
--
1.8.3.4
More information about the mesa-dev
mailing list