From 3027095761a0feaf72259eb0086590717aed8b13 Mon Sep 17 00:00:00 2001 From: Craig Donner Date: Thu, 16 Feb 2017 18:12:16 -0800 Subject: [PATCH] Add private consumer and producer flags to AHardwareBuffer. Bug: 34050596 Test: cts-tradefed run cts -m CtsNativeHardwareTestCases New test cases cover the new functionality. Change-Id: I9285e53b8e608778ec2f080cb5eda4596215224f --- core/jni/android_hardware_HardwareBuffer.cpp | 24 ++++++++++--------- .../android_hardware_HardwareBuffer.h | 9 +++---- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/core/jni/android_hardware_HardwareBuffer.cpp b/core/jni/android_hardware_HardwareBuffer.cpp index b26b6e111ee63..b91bd5c3aef82 100644 --- a/core/jni/android_hardware_HardwareBuffer.cpp +++ b/core/jni/android_hardware_HardwareBuffer.cpp @@ -46,7 +46,7 @@ using namespace android; // ---------------------------------------------------------------------------- // Debug -static const bool kDebugGraphicBuffer = false; +static constexpr bool kDebugGraphicBuffer = false; // ---------------------------------------------------------------------------- // Types @@ -92,8 +92,8 @@ static jlong android_hardware_HardwareBuffer_create(JNIEnv* env, jobject clazz, } uint64_t producerUsage = 0; uint64_t consumerUsage = 0; - android_hardware_HardwareBuffer_convertToGrallocUsageBits(usage, 0, &producerUsage, - &consumerUsage); + android_hardware_HardwareBuffer_convertToGrallocUsageBits(&producerUsage, &consumerUsage, usage, + 0); status_t error; sp buffer(alloc->createGraphicBuffer(width, height, pixelFormat, layers, producerUsage, consumerUsage, @@ -155,8 +155,11 @@ static jint android_hardware_HardwareBuffer_getLayers(JNIEnv* env, static jlong android_hardware_HardwareBuffer_getUsage(JNIEnv* env, jobject clazz, jlong nativeObject) { GraphicBuffer* buffer = GraphicBufferWrapper_to_GraphicBuffer(nativeObject); - return android_hardware_HardwareBuffer_convertFromGrallocUsageBits( + uint64_t usage0 = 0; + uint64_t usage1 = 0; + android_hardware_HardwareBuffer_convertFromGrallocUsageBits(&usage0, &usage1, buffer->getUsage(), buffer->getUsage()); + return usage0; } // ---------------------------------------------------------------------------- @@ -228,15 +231,14 @@ uint32_t android_hardware_HardwareBuffer_convertToPixelFormat(uint32_t format) { return AHardwareBuffer_convertToPixelFormat(format); } -void android_hardware_HardwareBuffer_convertToGrallocUsageBits(uint64_t usage0, - uint64_t /*usage1*/, uint64_t* outProducerUsage, - uint64_t* outConsumerUsage) { - AHardwareBuffer_convertToGrallocUsageBits(usage0, outProducerUsage, outConsumerUsage); +void android_hardware_HardwareBuffer_convertToGrallocUsageBits(uint64_t* outProducerUsage, + uint64_t* outConsumerUsage, uint64_t usage0, uint64_t usage1) { + AHardwareBuffer_convertToGrallocUsageBits(outProducerUsage, outConsumerUsage, usage0, usage1); } -uint64_t android_hardware_HardwareBuffer_convertFromGrallocUsageBits( - uint64_t producerUsage, uint64_t consumerUsage) { - return AHardwareBuffer_convertFromGrallocUsageBits(producerUsage, consumerUsage); +void android_hardware_HardwareBuffer_convertFromGrallocUsageBits(uint64_t* outUsage0, + uint64_t* outUsage1, uint64_t producerUsage, uint64_t consumerUsage) { + AHardwareBuffer_convertFromGrallocUsageBits(outUsage0, outUsage1, producerUsage, consumerUsage); } } // namespace android diff --git a/core/jni/include/android_runtime/android_hardware_HardwareBuffer.h b/core/jni/include/android_runtime/android_hardware_HardwareBuffer.h index a5d0596dd98bd..3545c565fb12b 100644 --- a/core/jni/include/android_runtime/android_hardware_HardwareBuffer.h +++ b/core/jni/include/android_runtime/android_hardware_HardwareBuffer.h @@ -41,12 +41,13 @@ extern uint32_t android_hardware_HardwareBuffer_convertToPixelFormat( /* Convert from AHARDWAREBUFFER_USAGE* flags to to gralloc usage flags. */ extern void android_hardware_HardwareBuffer_convertToGrallocUsageBits( - uint64_t usage0, uint64_t usage1, uint64_t* outProducerUsage, - uint64_t* outConsumerUsage); + uint64_t* outProducerUsage, uint64_t* outConsumerUsage, uint64_t usage0, + uint64_t usage1); /* Convert from gralloc usage flags to to AHARDWAREBUFFER_USAGE0* flags. */ -extern uint64_t android_hardware_HardwareBuffer_convertFromGrallocUsageBits( - uint64_t producerUsage, uint64_t consumerUsage); +extern void android_hardware_HardwareBuffer_convertFromGrallocUsageBits( + uint64_t* outUsage0, uint64_t* outUsage1, uint64_t producerUsage, + uint64_t consumerUsage); } // namespace android