diff --git a/src/libANGLE/renderer/vulkan/vk_helpers.cpp b/src/libANGLE/renderer/vulkan/vk_helpers.cpp index 2d012de8d6..6a805538f2 100644 --- a/src/libANGLE/renderer/vulkan/vk_helpers.cpp +++ b/src/libANGLE/renderer/vulkan/vk_helpers.cpp @@ -10202,6 +10202,12 @@ angle::Result ImageHelper::flushStagedUpdatesImpl(ContextVk *contextVk, } contextVk->getPerfCounters().fullImageClears++; // Remember the latest operation is a clear call. + fprintf(stderr, + "[POC-CACHE-SET] mCurrentSingleClearValue stored with " + "levelIndex=%u (Vk-space), original GL level=%u, " + "mFirstAllocatedLevel=%u\n", + update.data.clear.levelIndex, updateMipLevelGL.get(), + mFirstAllocatedLevel.get()); mCurrentSingleClearValue = update.data.clear; // Do not call onWrite as it removes mCurrentSingleClearValue, but instead call @@ -10364,6 +10370,31 @@ angle::Result ImageHelper::flushStagedUpdates(ContextVk *contextVk, mCurrentSingleClearValue.value() == update.data.clear) { ASSERT(levelGLStart + 1 == levelGLEnd); + const uint32_t cachedIdx = mCurrentSingleClearValue.value().levelIndex; + const bool multiLevel = (levelGLStart + 1 != levelGLEnd); + size_t pendingLevels = 0; + for (gl::LevelIndex l = levelGLStart; l < levelGLEnd; ++l) + { + SubresourceUpdates *lu = getLevelUpdates(l); + if (lu && !lu->empty()) + pendingLevels++; + } + fprintf(stderr, + "[POC-CACHE-MATCH] cached levelIndex=%u consumed as gl::LevelIndex; " + "current mFirstAllocatedLevel=%u; flush range=[%u,%u); " + "pendingLevelsInRange=%zu\n", + cachedIdx, mFirstAllocatedLevel.get(), levelGLStart.get(), + levelGLEnd.get(), pendingLevels); + if (multiLevel || pendingLevels > 1) + { + fprintf(stderr, + "[POC-BUG-CONFIRMED] Wrong-level redundant-clear optimization fired: " + "dropping Clear staged at GL level %u and EARLY-RETURNING without " + "flushing %zu pending level(s) in requested range [%u,%u). " + "Robust-resource-init clear for GL level %u is permanently lost.\n", + cachedIdx, pendingLevels, levelGLStart.get(), levelGLEnd.get(), + cachedIdx); + } ANGLE_VK_PERF_WARNING(contextVk, GL_DEBUG_SEVERITY_LOW, "Repeated Clear on framebuffer attachment dropped"); update.release(renderer);