The back-end compiler emits the number of color writes specified by wm_prog_key::nr_color_regions regardless of what nir_store_outputs we have. Once we've gone through and figured out which render targets actually exist and are written by the shader, we should restrict the key to avoid extra RT write messages. --- src/intel/vulkan/anv_pipeline.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index 523202cf3d9..6a27d305dbc 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -965,6 +965,11 @@ anv_pipeline_compile_fs(struct anv_pipeline *pipeline, var->data.location = rt_to_bindings[rt] + FRAG_RESULT_DATA0; } + /* Now that we've determined the actual number of render targets, adjust + * the key accordingly. + */ + key.nr_color_regions = num_rts; + if (num_rts == 0) { /* If we have no render targets, we need a null render target */ rt_bindings[0] = (struct anv_pipeline_binding) { -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev