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 <kenneth@whitecape.org> Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 */
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user