[Mesa-dev] [PATCH 7/7] intel/compiler: Release memory used by NIR metadata before generating machine code

Ian Romanick idr at freedesktop.org
Wed Nov 21 00:39:49 UTC 2018


From: Ian Romanick <ian.d.romanick at 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.romanick at 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);
+   }
+
    if (is_scalar) {
       prog_data->base.dispatch_mode = DISPATCH_MODE_SIMD8;
 
-- 
2.14.4



More information about the mesa-dev mailing list