Merge "Invalidate buffers on transform change" into udc-dev am: 700384f2a9

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23028807

Change-Id: Iddf12659dc4e941cb64f6133b844098ea7e3f497
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
John Reck
2023-05-04 19:22:01 +00:00
committed by Automerger Merge Worker
2 changed files with 13 additions and 0 deletions

View File

@@ -375,6 +375,14 @@ void VulkanSurface::releaseBuffers() {
}
}
void VulkanSurface::invalidateBuffers() {
for (uint32_t i = 0; i < mWindowInfo.bufferCount; i++) {
VulkanSurface::NativeBufferInfo& bufferInfo = mNativeBuffers[i];
bufferInfo.hasValidContents = false;
bufferInfo.lastPresentedCount = 0;
}
}
VulkanSurface::NativeBufferInfo* VulkanSurface::dequeueNativeBuffer() {
// Set the mCurrentBufferInfo to invalid in case of error and only reset it to the correct
// value at the end of the function if everything dequeued correctly.
@@ -407,6 +415,10 @@ VulkanSurface::NativeBufferInfo* VulkanSurface::dequeueNativeBuffer() {
// new NativeBufferInfo storage will be populated lazily as we dequeue each new buffer.
mWindowInfo.actualSize = actualSize;
releaseBuffers();
} else {
// A change in transform means we need to repaint the entire buffer area as the damage
// rects have just moved about.
invalidateBuffers();
}
if (transformHint != mWindowInfo.transform) {

View File

@@ -116,6 +116,7 @@ private:
WindowInfo* outWindowInfo);
static bool UpdateWindow(ANativeWindow* window, const WindowInfo& windowInfo);
void releaseBuffers();
void invalidateBuffers();
// TODO: This number comes from ui/BufferQueueDefs. We're not pulling the
// header in so that we don't need to depend on libui, but we should share