From 236e5a7c3599cff35d6e50deb6ab05696177cdce Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Tue, 10 Mar 2020 09:51:48 +0100 Subject: [PATCH] v3dv: split fragment shader array outputs Our backend expects that our output variables are not arrays so we can track the variable that writes to each output location separately. Fixes: dEQP-VK.glsl.440.linkage.* Part-of: --- src/broadcom/vulkan/v3dv_pipeline.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c index 1d533737845..d921b8f03b5 100644 --- a/src/broadcom/vulkan/v3dv_pipeline.c +++ b/src/broadcom/vulkan/v3dv_pipeline.c @@ -531,6 +531,10 @@ lower_pipeline_layout_info(nir_shader *shader, static void lower_fs_io(nir_shader *nir) { + /* Our backend doesn't handle array fragment shader outputs */ + NIR_PASS_V(nir, nir_lower_io_arrays_to_elements_no_indirects, false); + NIR_PASS_V(nir, nir_remove_dead_variables, nir_var_shader_out, NULL); + nir_assign_io_var_locations(nir, nir_var_shader_in, &nir->num_inputs, MESA_SHADER_FRAGMENT);