From fce71a255cb9fcc1559247dc5c91e5d4b3481b05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 5 Aug 2020 02:26:16 +0200 Subject: EEVEE: LightCache: Add warning if the cache cannot be saved --- .../blender/draw/engines/eevee/eevee_lightcache.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/source/blender/draw/engines/eevee/eevee_lightcache.c b/source/blender/draw/engines/eevee/eevee_lightcache.c index 92bb9227e13..d3a47c2641c 100644 --- a/source/blender/draw/engines/eevee/eevee_lightcache.c +++ b/source/blender/draw/engines/eevee/eevee_lightcache.c @@ -203,6 +203,21 @@ static bool eevee_lightcache_version_check(LightCache *lcache) } } +static bool eevee_lightcache_can_be_saved(LightCache *lcache) +{ + if (lcache->grid_tx.data) { + if (MEM_allocN_len(lcache->grid_tx.data) >= INT_MAX) { + return false; + } + } + if (lcache->cube_tx.data) { + if (MEM_allocN_len(lcache->cube_tx.data) >= INT_MAX) { + return false; + } + } + return true; +} + static int eevee_lightcache_irradiance_sample_count(LightCache *lcache) { int total_irr_samples = 0; @@ -246,6 +261,13 @@ void EEVEE_lightcache_info_update(SceneEEVEE *eevee) return; } + if (!eevee_lightcache_can_be_saved(lcache)) { + BLI_strncpy(eevee->light_cache_info, + TIP_("Error: LightCache is too large and will not be saved to disk"), + sizeof(eevee->light_cache_info)); + return; + } + char formatted_mem[15]; BLI_str_format_byte_unit(formatted_mem, eevee_lightcache_memsize_get(lcache), false); -- cgit v1.2.3