diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c index 5f12b167ed6..b92566cefd2 100644 --- a/src/broadcom/vulkan/v3dv_pipeline.c +++ b/src/broadcom/vulkan/v3dv_pipeline.c @@ -529,45 +529,30 @@ lower_pipeline_layout_info(nir_shader *shader, static void -lower_fs_inputs(nir_shader *nir) +lower_fs_io(nir_shader *nir) { nir_assign_io_var_locations(nir, nir_var_shader_in, &nir->num_inputs, MESA_SHADER_FRAGMENT); - NIR_PASS_V(nir, nir_lower_io, nir_var_shader_in, type_size_vec4, 0); + nir_assign_io_var_locations(nir, nir_var_shader_out, &nir->num_outputs, + MESA_SHADER_FRAGMENT); + + NIR_PASS_V(nir, nir_lower_io, nir_var_shader_in | nir_var_shader_out, + type_size_vec4, 0); } static void -lower_vs_inputs(struct nir_shader *nir) +lower_vs_io(struct nir_shader *nir) { nir_assign_io_var_locations(nir, nir_var_shader_in, &nir->num_inputs, MESA_SHADER_VERTEX); - /* FIXME: if we call the following pass, we get a crash later. Likely - * because it overlaps with v3d_nir_lower_io. Need further research though. - */ - /* NIR_PASS_V(nir, nir_lower_io, nir_var_shader_in, type_size_vec4, 0); */ -} - -static void -lower_fs_outputs(nir_shader *nir) -{ nir_assign_io_var_locations(nir, nir_var_shader_out, &nir->num_outputs, - MESA_SHADER_FRAGMENT); - - NIR_PASS_V(nir, nir_lower_io, nir_var_shader_out, type_size_vec4, 0); -} - -static void -lower_vs_outputs(nir_shader *nir) -{ - nir_assign_io_var_locations(nir, nir_var_shader_out, &nir->num_outputs, - MESA_SHADER_FRAGMENT); + MESA_SHADER_VERTEX); /* FIXME: if we call nir_lower_io, we get a crash later. Likely because it * overlaps with v3d_nir_lower_io. Need further research though. */ - /* NIR_PASS_V(nir, nir_lower_io, nir_var_shader_out, type_size_vec4, 0); */ } static void @@ -1108,8 +1093,7 @@ pipeline_compile_graphics(struct v3dv_pipeline *pipeline, pCreateInfo->pInputAssemblyState; pipeline->vs->topology = vk_to_pipe_prim_type[ia_info->topology]; - lower_vs_inputs(p_stage->nir); - lower_vs_outputs(p_stage->nir); + lower_vs_io(p_stage->nir); /* Note that at this point we would compile twice, one for vs and * other for vs_bin. For now we are maintaining two pipeline_stage @@ -1127,10 +1111,7 @@ pipeline_compile_graphics(struct v3dv_pipeline *pipeline, pipeline_populate_v3d_fs_key(&p_stage->key.fs, pCreateInfo, p_stage); - /* FIXME: create a per-build method with all the lowering - * needed. perhaps move to shader_compile_module_to_nir? */ - lower_fs_inputs(p_stage->nir); - lower_fs_outputs(p_stage->nir); + lower_fs_io(p_stage->nir); compile_pipeline_stage(pipeline->fs); break;