On 11/21/2018 11:08 AM, Jason Ekstrand wrote: > On Tue, Nov 20, 2018 at 6:40 PM Ian Romanick <i...@freedesktop.org > <mailto:i...@freedesktop.org>> wrote: > > From: Ian Romanick <ian.d.roman...@intel.com > <mailto:ian.d.roman...@intel.com>> > > Changes in peak memory usage according to Valgrind massif: > > mean soft fp64 using uint64: 1,342,766,051 => 1,010,677,195 > gfxbench5 aztec ruins high 11: 62,369,974 => 62,369,974 > deus ex mankind divided 148: 62,290,717 => 62,290,717 > deus ex mankind divided 2890: 72,105,042 => 71,930,254 > dirt showdown 676: 72,243,383 => 72,243,383 > dolphin ubershaders 210: 80,650,936 => 80,650,936 > > Signed-off-by: Ian Romanick <ian.d.roman...@intel.com > <mailto:ian.d.roman...@intel.com>> > --- > src/intel/compiler/brw_fs.cpp | 6 ++++++ > src/intel/compiler/brw_vec4.cpp | 6 ++++++ > 2 files changed, 12 insertions(+) > > diff --git a/src/intel/compiler/brw_fs.cpp > b/src/intel/compiler/brw_fs.cpp > index 3e083723471..e0e6b34d41a 100644 > --- a/src/intel/compiler/brw_fs.cpp > +++ b/src/intel/compiler/brw_fs.cpp > @@ -7170,6 +7170,12 @@ brw_compile_fs(const struct brw_compiler > *compiler, void *log_data, > prog_data->barycentric_interp_modes = > brw_compute_barycentric_interp_modes(compiler->devinfo, shader); > > + /* Release memory used by NIR metadata. It is not needed any > longer. */ > + nir_foreach_function(function, shader) { > + if (function->impl) > + nir_live_ssa_defs_impl_flush(function->impl); > + } > + > cfg_t *simd8_cfg = NULL, *simd16_cfg = NULL, *simd32_cfg = NULL; > > fs_visitor v8(compiler, log_data, mem_ctx, key, > diff --git a/src/intel/compiler/brw_vec4.cpp > b/src/intel/compiler/brw_vec4.cpp > index 74a4d09fc79..3401d999a15 100644 > --- a/src/intel/compiler/brw_vec4.cpp > +++ b/src/intel/compiler/brw_vec4.cpp > @@ -2947,6 +2947,12 @@ brw_compile_vs(const struct brw_compiler > *compiler, void *log_data, > brw_print_vue_map(stderr, &prog_data->base.vue_map); > } > > + /* Release memory used by NIR metadata. It is not needed any > longer. */ > + nir_foreach_function(function, shader) { > + if (function->impl) > + nir_live_ssa_defs_impl_flush(function->impl); > + } > > > I just had a look at this and it looks like nir_sweep will also clean up > the metadata. Maybe we should just add a nir_sweep() call to the end of > brw_postprocess_nir()? That would clean up other artifacts of > stage-specific lowering as well and putting it in brw_postprocess_nir() > would make it apply to all stages.
That is interesting. I did not know about nir_sweep. There were some other bits on metadata, but, since I wasn't sure that none of it was used during code generation, I decided to err on the conservative side. I'll give this a try. > + > if (is_scalar) { > prog_data->base.dispatch_mode = DISPATCH_MODE_SIMD8; > > -- > 2.14.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org <mailto:mesa-dev@lists.freedesktop.org> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev