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 <tarceri@itsqueeze.com>
This commit is contained in:
@@ -559,6 +559,9 @@ anv_pipeline_link_vs(const struct brw_compiler *compiler,
|
|||||||
struct anv_pipeline_stage *next_stage)
|
struct anv_pipeline_stage *next_stage)
|
||||||
{
|
{
|
||||||
anv_fill_binding_table(&vs_stage->prog_data.vs.base.base, 0);
|
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 *
|
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);
|
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,
|
nir_lower_patch_vertices(tes_stage->nir,
|
||||||
tcs_stage->nir->info.tess.tcs_vertices_out,
|
tcs_stage->nir->info.tess.tcs_vertices_out,
|
||||||
NULL);
|
NULL);
|
||||||
@@ -671,6 +676,9 @@ anv_pipeline_link_tes(const struct brw_compiler *compiler,
|
|||||||
struct anv_pipeline_stage *next_stage)
|
struct anv_pipeline_stage *next_stage)
|
||||||
{
|
{
|
||||||
anv_fill_binding_table(&tes_stage->prog_data.tes.base.base, 0);
|
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 *
|
static const unsigned *
|
||||||
@@ -691,6 +699,9 @@ anv_pipeline_link_gs(const struct brw_compiler *compiler,
|
|||||||
struct anv_pipeline_stage *next_stage)
|
struct anv_pipeline_stage *next_stage)
|
||||||
{
|
{
|
||||||
anv_fill_binding_table(&gs_stage->prog_data.gs.base.base, 0);
|
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 *
|
static const unsigned *
|
||||||
|
Reference in New Issue
Block a user