From c4b9ce02d0a230acf8b4acbcf1d7cde8ca467c8c Mon Sep 17 00:00:00 2001 From: Krzysztof KosiƄski Date: Wed, 2 Jan 2019 16:27:05 -0800 Subject: Fix AHardwareBuffer_isSupported for cube maps. Cube maps need a multiple of 6 layers, but the function attempted a trial allocation with 1 or 2 layers instead, which cannot succeed. Bug: 121285176 Bug: 122267389 Test: Builds successfully. Change-Id: Id4cf26359ad2884d597c6571501b452b930fa4fa --- libs/nativewindow/AHardwareBuffer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'libs/nativewindow/AHardwareBuffer.cpp') diff --git a/libs/nativewindow/AHardwareBuffer.cpp b/libs/nativewindow/AHardwareBuffer.cpp index a19fe17d16..6ea127064b 100644 --- a/libs/nativewindow/AHardwareBuffer.cpp +++ b/libs/nativewindow/AHardwareBuffer.cpp @@ -268,7 +268,11 @@ int AHardwareBuffer_isSupported(const AHardwareBuffer_Desc* desc) { AHardwareBuffer_Desc trialDesc = *desc; trialDesc.width = 4; trialDesc.height = desc->format == AHARDWAREBUFFER_FORMAT_BLOB ? 1 : 4; - trialDesc.layers = desc->layers == 1 ? 1 : 2; + if (desc->usage & AHARDWAREBUFFER_USAGE_GPU_CUBE_MAP) { + trialDesc.layers = desc->layers == 6 ? 6 : 12; + } else { + trialDesc.layers = desc->layers == 1 ? 1 : 2; + } AHardwareBuffer* trialBuffer = nullptr; int result = AHardwareBuffer_allocate(&trialDesc, &trialBuffer); if (result == NO_ERROR) { -- cgit v1.2.3-59-g8ed1b