From: Jason Ekstrand Date: Sat, 28 Oct 2017 00:07:52 +0000 (-0700) Subject: anv/pipeline: Do cross-stage linking optimizations X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7ef6cd0ee87ae89d9809a4ca7dc903d7fac2802e;p=mesa.git anv/pipeline: Do cross-stage linking optimizations This appears to help the Aztec Ruins benchmark by about 2% on my Kaby Lake gt2 laptop. Reviewed-by: Timothy Arceri --- diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index 6095c1fb068..85f38da60ff 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -559,6 +559,9 @@ anv_pipeline_link_vs(const struct brw_compiler *compiler, struct anv_pipeline_stage *next_stage) { anv_fill_binding_table(&vs_stage->prog_data.vs.base.base, 0); + + if (next_stage) + brw_nir_link_shaders(compiler, &vs_stage->nir, &next_stage->nir); } static const unsigned * @@ -623,6 +626,8 @@ anv_pipeline_link_tcs(const struct brw_compiler *compiler, anv_fill_binding_table(&tcs_stage->prog_data.tcs.base.base, 0); + brw_nir_link_shaders(compiler, &tcs_stage->nir, &tes_stage->nir); + nir_lower_patch_vertices(tes_stage->nir, tcs_stage->nir->info.tess.tcs_vertices_out, NULL); @@ -671,6 +676,9 @@ anv_pipeline_link_tes(const struct brw_compiler *compiler, struct anv_pipeline_stage *next_stage) { anv_fill_binding_table(&tes_stage->prog_data.tes.base.base, 0); + + if (next_stage) + brw_nir_link_shaders(compiler, &tes_stage->nir, &next_stage->nir); } static const unsigned * @@ -691,6 +699,9 @@ anv_pipeline_link_gs(const struct brw_compiler *compiler, struct anv_pipeline_stage *next_stage) { anv_fill_binding_table(&gs_stage->prog_data.gs.base.base, 0); + + if (next_stage) + brw_nir_link_shaders(compiler, &gs_stage->nir, &next_stage->nir); } static const unsigned *