diff --git a/src/freedreno/ir3/ir3_compiler.c b/src/freedreno/ir3/ir3_compiler.c index 7df4af6a3d8..61d609517a1 100644 --- a/src/freedreno/ir3/ir3_compiler.c +++ b/src/freedreno/ir3/ir3_compiler.c @@ -239,6 +239,7 @@ ir3_compiler_create(struct fd_device *dev, const struct fd_dev_id *dev_id, compiler->reading_shading_rate_requires_smask_quirk = dev_info->a7xx.reading_shading_rate_requires_smask_quirk; compiler->has_alias_rt = dev_info->a7xx.has_alias_rt; + compiler->mergedregs = true; if (compiler->gen >= 7) { compiler->has_alias_tex = true; diff --git a/src/freedreno/ir3/ir3_compiler.h b/src/freedreno/ir3/ir3_compiler.h index cf1491d7e0e..2ad68618f8e 100644 --- a/src/freedreno/ir3/ir3_compiler.h +++ b/src/freedreno/ir3/ir3_compiler.h @@ -110,6 +110,9 @@ struct ir3_compiler { /* on a650, vertex shader <-> tess control io uses LDL/STL */ bool tess_use_shared; + /* Whether full and half regs are merged. */ + bool mergedregs; + /* The maximum number of constants, in vec4's, across the entire graphics * pipeline. */ diff --git a/src/freedreno/ir3/ir3_shader.c b/src/freedreno/ir3/ir3_shader.c index 5af3576d208..2418f310e67 100644 --- a/src/freedreno/ir3/ir3_shader.c +++ b/src/freedreno/ir3/ir3_shader.c @@ -511,7 +511,7 @@ alloc_variant(struct ir3_shader *shader, const struct ir3_shader_key *key, v->key = *key; v->type = shader->type; v->compiler = shader->compiler; - v->mergedregs = shader->compiler->gen >= 6; + v->mergedregs = shader->compiler->mergedregs; v->stream_output = shader->stream_output; v->name = ralloc_strdup(v, shader->nir->info.name);