From 49d8e2aff1d7f7da6311dbae8621d6e79cea2d78 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Sun, 30 Dec 2018 08:59:54 -0800 Subject: [PATCH] v3d: Don't forget to include RT writes in precompiles. Looking at some assembly dumps for an optimization, we were clearly missing important parts of the shader! --- src/gallium/drivers/v3d/v3d_program.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gallium/drivers/v3d/v3d_program.c b/src/gallium/drivers/v3d/v3d_program.c index ef80069baab..ec9d0339528 100644 --- a/src/gallium/drivers/v3d/v3d_program.c +++ b/src/gallium/drivers/v3d/v3d_program.c @@ -197,6 +197,16 @@ v3d_shader_precompile(struct v3d_context *v3d, .base.shader_state = so, }; + nir_foreach_variable(var, &s->outputs) { + if (var->data.location == FRAG_RESULT_COLOR) { + key.nr_cbufs = 1; + } else if (var->data.location == FRAG_RESULT_DATA0) { + key.nr_cbufs = MAX2(key.nr_cbufs, + var->data.location - + FRAG_RESULT_DATA0 + 1); + } + } + v3d_setup_shared_precompile_key(so, &key.base); v3d_get_compiled_shader(v3d, &key.base); } else { -- 2.30.2