diff options
| author | 2023-03-30 12:29:01 -0700 | |
|---|---|---|
| committer | 2023-03-30 16:14:25 -0700 | |
| commit | 2461722391091cbd690ec1808061b91e33a5afa0 (patch) | |
| tree | 20e1c5d8f9397bd20fdb202721956fac1621c7ee /graphics/java/android | |
| parent | d710ab4aadc682dea1ce280e1f6974ff76d0c7c0 (diff) | |
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
Diffstat (limited to 'graphics/java/android')
| -rw-r--r-- | graphics/java/android/graphics/HardwareBufferRenderer.java | 15 |
1 files changed, 13 insertions, 2 deletions
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<RenderResult> 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 { |