diff --git a/src/libANGLE/renderer/vulkan/vk_helpers.cpp b/src/libANGLE/renderer/vulkan/vk_helpers.cpp index 672ca4d92a..a0bf3fc0fd 100644 --- a/src/libANGLE/renderer/vulkan/vk_helpers.cpp +++ b/src/libANGLE/renderer/vulkan/vk_helpers.cpp @@ -8305,6 +8305,12 @@ void ImageHelper::removeStagedUpdates(ErrorContext *context, gl::LevelIndex levelGLStart, gl::LevelIndex levelGLEnd) { + // The cached "last full-level clear" must be invalidated when staged updates for any level + // are removed. Callers may release and re-allocate the underlying VkImage immediately after + // this call (e.g. TextureVk::redefineLevel for array textures); a stale cache would cause + // flushStagedUpdates() to drop the robust-resource-init clear on the freshly-allocated image. + mCurrentSingleClearValue.reset(); + assertSubresourceUpdateRefCountsConsistent(); // Remove all updates to levels [start, end].