Vulkan: Fix bug in ImageHelper::flushSingleSubresourceStagedUpdates There is another bug in ImageHelper flush staged update code path that exposed by a new test I added in crrev.com/c/5606145. When we render to a multi-layered texture and that layer we are trying to render to has a staged clear and followed by an buffer update, and if the buffer update overlaps with layer we try to render to but not exact match, we will incorrectly think that the glClear call can override the buffer update. The bug here is that ImageHelper::flushSingleSubresourceStagedUpdates is using ImageHelper::SubresourceUpdate::isUpdateToLayers() call to decide if buffer update will be overriden. That isUpdateToLayers is only looking exact layer range match. So in this case because the buffer update's layer range is bigger than glClear, it returns false. This causes the flushSingleSubresourceStagedUpdates think it is outside the layer range we try to render, and causes rendering bug. This CL renames isUpdateToLayers to isLayerRangeExactMatch to reflect the actual behavior of the function. This CL also adds new API isWithinLayerRange and called by flushSingleSubresourceStagedUpdates to decide if the updates can implement using renderPass loadOp. Bug: angleproject:345532371 Bug: angleproject:42263375 Change-Id: Ia604ed1a61b56d7bde05f12a03baef8f00af2b17 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5619730 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>