diff --git a/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_page_defrag_comp.glsl b/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_page_defrag_comp.glsl index 4e8e448e596..3a1d292bfc2 100644 --- a/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_page_defrag_comp.glsl +++ b/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_page_defrag_comp.glsl @@ -24,11 +24,14 @@ const uint max_page = SHADOW_MAX_PAGE; void find_first_valid(inout uint src, uint dst) { - for (; src < dst; src++) { - if (pages_cached_buf[src % max_page].x != uint(-1)) { + for (uint i = src; i < dst; i++) { + if (pages_cached_buf[i % max_page].x != uint(-1)) { + src = i; return; } } + + src = dst; } void page_cached_free(uint page_index) diff --git a/source/blender/draw/tests/eevee_test.cc b/source/blender/draw/tests/eevee_test.cc index ecfb94740c1..40f7584fd84 100644 --- a/source/blender/draw/tests/eevee_test.cc +++ b/source/blender/draw/tests/eevee_test.cc @@ -648,6 +648,10 @@ class TestAlloc { GPU_render_begin(); int tiles_index = 1; + for (int i : IndexRange(SHADOW_MAX_TILE)) { + tiles_data[i] = 0; + } + for (uint i : IndexRange(0, page_free_count)) { uint2 page = {i % SHADOW_PAGE_PER_ROW, i / SHADOW_PAGE_PER_ROW}; pages_free_data[i] = page.x | (page.y << 16u);