summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-10-27 17:07:52 -0700
committerJason Ekstrand <[email protected]>2018-08-02 10:29:20 -0700
commit7ef6cd0ee87ae89d9809a4ca7dc903d7fac2802e (patch)
tree8facae79f9ab84b9ddd3061af0d7a971360fb3bd /src
parenta5bffa061dc62ed5e757435c30fdd4bb9cd55c61 (diff)
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 <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/intel/vulkan/anv_pipeline.c11
1 files changed, 11 insertions, 0 deletions
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 *