From 2461722391091cbd690ec1808061b91e33a5afa0 Mon Sep 17 00:00:00 2001 From: Nader Jawad Date: Thu, 30 Mar 2023 12:29:01 -0700 Subject: Fix for HardwareBufferRenderer pre-rotation Updated transform matrix to match the implementation within VulkanSurface.cpp Updated getFrame logic to return the logical dimensions of a HardwareBuffer target instead of the width/height of a HardwareBuffer in case pre-rotation transforms are applied Fixes: 276362013 Test: Updated HardwareBufferRendererTests Change-Id: I9877af52a81804facc8b89b65cce3433b96655dc --- .../java/android/graphics/HardwareBufferRenderer.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'graphics/java') diff --git a/graphics/java/android/graphics/HardwareBufferRenderer.java b/graphics/java/android/graphics/HardwareBufferRenderer.java index 361dc594f2c6..e04f13c9b922 100644 --- a/graphics/java/android/graphics/HardwareBufferRenderer.java +++ b/graphics/java/android/graphics/HardwareBufferRenderer.java @@ -275,11 +275,22 @@ public class HardwareBufferRenderer implements AutoCloseable { Consumer wrapped = consumable -> executor.execute( () -> renderCallback.accept(consumable)); if (!isClosed()) { + int renderWidth; + int renderHeight; + if (mTransform == SurfaceControl.BUFFER_TRANSFORM_ROTATE_90 + || mTransform == SurfaceControl.BUFFER_TRANSFORM_ROTATE_270) { + renderWidth = mHardwareBuffer.getHeight(); + renderHeight = mHardwareBuffer.getWidth(); + } else { + renderWidth = mHardwareBuffer.getWidth(); + renderHeight = mHardwareBuffer.getHeight(); + } + nRender( mProxy, mTransform, - mHardwareBuffer.getWidth(), - mHardwareBuffer.getHeight(), + renderWidth, + renderHeight, mColorSpace.getNativeInstance(), wrapped); } else { -- cgit v1.2.3-59-g8ed1b