This patch series is a draft changes to reduce memory usage when compiling shaders and add utility function to calculate a size of memory contexts.
The issue I'm attempting to fix described in the bug: https://bugs.freedesktop.org/show_bug.cgi?id=103274 In short some 32bit games under Wine use a lot of complex shaders compiling which leads to huge memory usage and sometimes to crashes due to it. The changes themselves are trivial but have some price: After the changes shader with average complexity may link ~3-5% slower. The savings are huge when compiling a lot of shaders: In my test case it was around 1mb per shader where the size of nir after sweep was 20-40kb. Since the changes slightly slow the compilation and are useful for small amount of cases I believe that it may be better to introduce new environment variable to control these sweeps. I would like to get advice whether this change is desirable and should it be hidden behind environment variable (if yes suggestions about its name are welcomed). Also I wasn't able to test the change in st_link_nir and will welcome some help with this. Danylo Piliaiev (3): i965: Sweep NIR after linking phase to free held memory st: Sweep NIR after linking phase to free held memory ralloc: Add ralloc_calc_size to measure memory held by memory contexts src/mesa/drivers/dri/i965/brw_link.cpp | 9 +++++++ src/mesa/state_tracker/st_glsl_to_nir.cpp | 2 ++ src/util/ralloc.c | 30 +++++++++++++++++++++++ src/util/ralloc.h | 5 ++++ 4 files changed, 46 insertions(+) -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev