diff options
author | Vasily Khoruzhick <anarsoul@gmail.com> | 2019-08-29 21:14:54 -0700 |
---|---|---|
committer | Vasily Khoruzhick <anarsoul@gmail.com> | 2019-09-06 01:51:28 +0000 |
commit | 9367d2ca37a3b8108ecb74e2875a600b5543c163 (patch) | |
tree | 01a8c4937a0ff41d3e7bfe4d27008649f46f522e /src/panfrost | |
parent | f9f7cbc1aa36cce6caa42c0cf58c5cbefedc19fd (diff) | |
download | mesa-9367d2ca37a3b8108ecb74e2875a600b5543c163.tar.gz |
nir: allow specifying filter callback in lower_alu_to_scalar
Set of opcodes doesn't have enough flexibility in certain cases. E.g.
Utgard PP has vector conditional select operation, but condition is always
scalar. Lowering all the vector selects to scalar increases instruction
number, so we need a way to filter only those ops that can't be handled
in hardware.
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Diffstat (limited to 'src/panfrost')
-rw-r--r-- | src/panfrost/bifrost/bifrost_compile.c | 2 | ||||
-rw-r--r-- | src/panfrost/bifrost/cmdline.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c index 5e34b95d308..2af36ee8668 100644 --- a/src/panfrost/bifrost/bifrost_compile.c +++ b/src/panfrost/bifrost/bifrost_compile.c @@ -57,7 +57,7 @@ optimize_nir(nir_shader *nir) NIR_PASS(progress, nir, nir_opt_constant_folding); NIR_PASS(progress, nir, nir_lower_vars_to_ssa); - NIR_PASS(progress, nir, nir_lower_alu_to_scalar, NULL); + NIR_PASS(progress, nir, nir_lower_alu_to_scalar, NULL, NULL); NIR_PASS(progress, nir, nir_opt_if, true); } while (progress); diff --git a/src/panfrost/bifrost/cmdline.c b/src/panfrost/bifrost/cmdline.c index 6dec34af0e5..0c495d25d54 100644 --- a/src/panfrost/bifrost/cmdline.c +++ b/src/panfrost/bifrost/cmdline.c @@ -59,7 +59,7 @@ compile_shader(char **argv) NIR_PASS_V(nir[i], nir_split_var_copies); NIR_PASS_V(nir[i], nir_lower_var_copies); - NIR_PASS_V(nir[i], nir_lower_alu_to_scalar, NULL); + NIR_PASS_V(nir[i], nir_lower_alu_to_scalar, NULL, NULL); /* before buffers and vars_to_ssa */ NIR_PASS_V(nir[i], gl_nir_lower_bindless_images); |