From 1e9bcf571356b23d1fb02f101a8962239e492365 Mon Sep 17 00:00:00 2001 From: AlmaLinux RelEng Bot Date: Thu, 12 Mar 2026 10:41:19 -0400 Subject: [PATCH] import UBI mesa-25.0.7-5.el9_7 --- ...Re-enable-multi-file-cache-by-defaul.patch | 184 ++++++++++++++++++ SPECS/mesa.spec | 9 +- 2 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 SOURCES/0001-util-disk_cache-Re-enable-multi-file-cache-by-defaul.patch diff --git a/SOURCES/0001-util-disk_cache-Re-enable-multi-file-cache-by-defaul.patch b/SOURCES/0001-util-disk_cache-Re-enable-multi-file-cache-by-defaul.patch new file mode 100644 index 0000000..96fc39d --- /dev/null +++ b/SOURCES/0001-util-disk_cache-Re-enable-multi-file-cache-by-defaul.patch @@ -0,0 +1,184 @@ +From b51cf39cf40db4bfde0950483756ec09f6c21b39 Mon Sep 17 00:00:00 2001 +From: Dmitry Osipenko +Date: Tue, 25 Mar 2025 23:27:13 +0300 +Subject: [PATCH] util/disk_cache: Re-enable multi-file cache by default +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Over past months a performance issue was found with the Mesa-DB cache +implementation that results in a too slow cache startup time when cache is +full. A better indexing strategy will need to be invented to mitigate the +issue. Until then, let's default back to the multi-file cache. + +Suggested-by: Michel Dänzer +Acked-by: Timothy Arceri +Signed-off-by: Dmitry Osipenko +Part-of: +--- + docs/envvars.rst | 32 +++++++++++++++++++++++--------- + src/util/disk_cache.c | 10 ++++++---- + src/util/tests/cache_test.cpp | 11 +++++++++++ + 3 files changed, 40 insertions(+), 13 deletions(-) + +diff --git a/docs/envvars.rst b/docs/envvars.rst +index 7247158cc50..3ea8415ca25 100644 +--- a/docs/envvars.rst ++++ b/docs/envvars.rst +@@ -200,10 +200,11 @@ Core Mesa environment variables + .. envvar:: MESA_SHADER_CACHE_DIR + + if set, determines the directory to be used for the on-disk cache of +- compiled shader programs. If this variable is not set, then the cache +- will be stored in ``$XDG_CACHE_HOME/mesa_shader_cache_db`` (if that +- variable is set), or else within ``.cache/mesa_shader_cache_db`` within +- the user's home directory. ++ compiled shader programs. If set then the cache will be stored in ++ ``$MESA_SHADER_CACHE_DIR/mesa_shader_cache``. If this variable is not ++ set, then the cache will be stored in ++ ``$XDG_CACHE_HOME/mesa_shader_cache`` (if that variable is set), or else ++ within ``.cache/mesa_shader_cache`` within the user's home directory. + + .. envvar:: MESA_SHADER_CACHE_SHOW_STATS + +@@ -226,11 +227,12 @@ Core Mesa environment variables + + .. envvar:: MESA_DISK_CACHE_MULTI_FILE + +- if set to 1, enables the multi file on-disk shader cache implementation +- instead of the default Mesa-DB cache implementation. +- This implementation increases the overall disk usage. +- If :envvar:`MESA_SHADER_CACHE_DIR` is not set, the cache will be stored +- in ``$XDG_CACHE_HOME/mesa_shader_cache`` (if that variable is set) ++ if set to 1 (set by default), enables the multi file on-disk ++ shader cache implementation. This implementation increases the overall ++ disk usage. ++ If :envvar:`MESA_SHADER_CACHE_DIR` is set, the cache will be stored in ++ ``$MESA_SHADER_CACHE_DIR/mesa_shader_cache``, or else within ++ ``$XDG_CACHE_HOME/mesa_shader_cache`` (if that variable is set) + or else within ``.cache/mesa_shader_cache`` within the user's home + directory. + +@@ -245,6 +247,18 @@ Core Mesa environment variables + and ``filename1_idx.foz``. A limit of 8 DBs can be loaded and this limit + is shared with :envvar:`MESA_DISK_CACHE_READ_ONLY_FOZ_DBS_DYNAMIC_LIST`. + ++.. envvar:: MESA_DISK_CACHE_DATABASE ++ ++ if set to 1, enables the Mesa-DB single file on-disk shader cache ++ implementation instead of the default multi-file cache implementation. ++ Like :envvar:`MESA_DISK_CACHE_SINGLE_FILE`, Mesa-DB reduces overall ++ disk usage but Mesa-DB supports cache size limits via ++ :envvar:`MESA_SHADER_CACHE_MAX_SIZE`. If ++ :envvar:`MESA_SHADER_CACHE_DIR` is not set, the cache will be stored ++ in ``$XDG_CACHE_HOME/mesa_shader_cache_db`` (if that variable is set) ++ or else within ``.cache/mesa_shader_cache_db`` within the user's home ++ directory. ++ + .. envvar:: MESA_DISK_CACHE_DATABASE_NUM_PARTS + + specifies number of mesa-db cache parts, default is 50. +diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c +index 391f8cfdc1d..d62ba853179 100644 +--- a/src/util/disk_cache.c ++++ b/src/util/disk_cache.c +@@ -223,17 +223,19 @@ disk_cache_create(const char *gpu_name, const char *driver_id, + uint64_t max_size = 0; + char *max_size_str; + +- if (debug_get_bool_option("MESA_DISK_CACHE_SINGLE_FILE", false)) ++ if (debug_get_bool_option("MESA_DISK_CACHE_SINGLE_FILE", false)) { + cache_type = DISK_CACHE_SINGLE_FILE; +- else if (debug_get_bool_option("MESA_DISK_CACHE_MULTI_FILE", false)) +- cache_type = DISK_CACHE_MULTI_FILE; +- else { ++ } else if (debug_get_bool_option("MESA_DISK_CACHE_DATABASE", false)) { + cache_type = DISK_CACHE_DATABASE; + /* Since switching the default cache to , remove the + * old cache folder if it hasn't been modified for more than 7 days. + */ + if (!getenv("MESA_SHADER_CACHE_DIR") && !getenv("MESA_GLSL_CACHE_DIR") && disk_cache_enabled()) + disk_cache_delete_old_cache(); ++ } else if (debug_get_bool_option("MESA_DISK_CACHE_MULTI_FILE", true)) { ++ cache_type = DISK_CACHE_MULTI_FILE; ++ } else { ++ return NULL; + } + + max_size_str = getenv("MESA_SHADER_CACHE_MAX_SIZE"); +diff --git a/src/util/tests/cache_test.cpp b/src/util/tests/cache_test.cpp +index f181178c809..d1772f3240f 100644 +--- a/src/util/tests/cache_test.cpp ++++ b/src/util/tests/cache_test.cpp +@@ -819,7 +819,9 @@ TEST_F(Cache, Database) + #ifndef ENABLE_SHADER_CACHE + GTEST_SKIP() << "ENABLE_SHADER_CACHE not defined."; + #else ++ setenv("MESA_DISK_CACHE_MULTI_FILE", "false", 1); + setenv("MESA_DISK_CACHE_DATABASE_NUM_PARTS", "1", 1); ++ setenv("MESA_DISK_CACHE_DATABASE", "true", 1); + + test_disk_cache_create(mem_ctx, CACHE_DIR_NAME_DB, driver_id); + +@@ -845,6 +847,7 @@ TEST_F(Cache, Database) + + test_put_big_sized_entry_to_empty_cache(driver_id); + ++ setenv("MESA_DISK_CACHE_DATABASE", "false", 1); + unsetenv("MESA_DISK_CACHE_DATABASE_NUM_PARTS"); + + err = rmrf_local(CACHE_TEST_TMP); +@@ -872,6 +875,7 @@ TEST_F(Cache, Combined) + #else + setenv("MESA_DISK_CACHE_SINGLE_FILE", "true", 1); + setenv("MESA_DISK_CACHE_MULTI_FILE", "true", 1); ++ setenv("MESA_DISK_CACHE_DATABASE", "false", 1); + + #ifdef SHADER_CACHE_DISABLE_BY_DEFAULT + setenv("MESA_SHADER_CACHE_DISABLE", "false", 1); +@@ -942,6 +946,7 @@ TEST_F(Cache, Combined) + + setenv("MESA_DISK_CACHE_SINGLE_FILE", "false", 1); + setenv("MESA_DISK_CACHE_MULTI_FILE", "false", 1); ++ setenv("MESA_DISK_CACHE_DATABASE", "true", 1); + + /* Create MESA-DB cache with enabled retrieval from the read-only + * cache. */ +@@ -1010,6 +1015,7 @@ TEST_F(Cache, Combined) + disk_cache_destroy(cache_mesa_db); + + /* Create default multi-file cache. */ ++ setenv("MESA_DISK_CACHE_DATABASE", "false", 1); + setenv("MESA_DISK_CACHE_MULTI_FILE", "true", 1); + + /* Enable read-only cache. */ +@@ -1068,7 +1074,9 @@ TEST_F(Cache, Combined) + + disk_cache_destroy(cache_multifile); + ++ unsetenv("MESA_DISK_CACHE_SINGLE_FILE"); + unsetenv("MESA_DISK_CACHE_MULTI_FILE"); ++ unsetenv("MESA_DISK_CACHE_DATABASE"); + + int err = rmrf_local(CACHE_TEST_TMP); + EXPECT_EQ(err, 0) << "Removing " CACHE_TEST_TMP " again"; +@@ -1325,13 +1333,16 @@ TEST_F(Cache, DatabaseMultipartEviction) + #ifndef ENABLE_SHADER_CACHE + GTEST_SKIP() << "ENABLE_SHADER_CACHE not defined."; + #else ++ setenv("MESA_DISK_CACHE_MULTI_FILE", "false", 1); + setenv("MESA_DISK_CACHE_DATABASE_NUM_PARTS", "3", 1); ++ setenv("MESA_DISK_CACHE_DATABASE", "true", 1); + + test_disk_cache_create(mem_ctx, CACHE_DIR_NAME_DB, driver_id); + + test_multipart_eviction(driver_id); + + unsetenv("MESA_DISK_CACHE_DATABASE_NUM_PARTS"); ++ unsetenv("MESA_DISK_CACHE_DATABASE"); + + int err = rmrf_local(CACHE_TEST_TMP); + EXPECT_EQ(err, 0) << "Removing " CACHE_TEST_TMP " again"; +-- +2.52.0 + diff --git a/SPECS/mesa.spec b/SPECS/mesa.spec index d84e4bd..8cb552f 100644 --- a/SPECS/mesa.spec +++ b/SPECS/mesa.spec @@ -68,7 +68,7 @@ Name: mesa Summary: Mesa graphics libraries %global ver 25.0.7 Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)} -Release: 4%{?dist} +Release: 5%{?dist} License: MIT AND BSD-3-Clause AND SGI-B-2.0 URL: http://www.mesa3d.org @@ -131,6 +131,10 @@ Patch12: 0001-glx-don-t-call-GL-functions-directly-use-the-current.patch Patch60: 0001-drisw-Modify-drisw_swap_buffers_with_damage-to-swap-.patch Patch61: 0002-Revert-drisw-Copy-entire-buffer-ignoring-damage-regi.patch +# Fix HOME directory being part of NFS +# https://issues.redhat.com/browse/RHEL-110665 +Patch70: 0001-util-disk_cache-Re-enable-multi-file-cache-by-defaul.patch + # Build our own version but keep the dependency for the RPM macros BuildRequires: meson BuildRequires: gcc @@ -851,6 +855,9 @@ popd %endif %changelog +* Mon Feb 23 2026 Anusha Srivatsa - 25.0.7-5 +- Resolves: https://issues.redhat.com/browse/RHEL-151404 + * Tue Jan 6 2026 Jocelyn Falempe