Plumb gralloc producer/consumer bits correctly

Bug: 33350696
Test: compile, boot device, cts
Change-Id: I2f078cf4bbdf0db49f2e914b051f55629fb37eb6
diff --git a/libs/nativewindow/tests/AHardwareBufferTest.cpp b/libs/nativewindow/tests/AHardwareBufferTest.cpp
index 1099043..cc2731d 100644
--- a/libs/nativewindow/tests/AHardwareBufferTest.cpp
+++ b/libs/nativewindow/tests/AHardwareBufferTest.cpp
@@ -19,11 +19,12 @@
 
 #include <android/hardware_buffer.h>
 #include <private/android/AHardwareBufferHelpers.h>
-#include <hardware/gralloc1.h>
+#include <android/hardware/graphics/common/1.0/types.h>
 
 #include <gtest/gtest.h>
 
 using namespace android;
+using android::hardware::graphics::common::V1_0::BufferUsage;
 
 static ::testing::AssertionResult BuildHexFailureMessage(uint64_t expected,
         uint64_t actual, const char* type) {
@@ -35,28 +36,14 @@
 }
 
 static ::testing::AssertionResult TestUsageConversion(
-        uint64_t grallocProducerUsage, uint64_t grallocConsumerUsage,
-        uint64_t hardwareBufferUsage0, uint64_t hardwareBufferUsage1) {
-    uint64_t producerUsage = 0;
-    uint64_t consumerUsage = 0;
-    uint64_t usage0 = 0;
-    uint64_t usage1 = 0;
+        uint64_t grallocUsage, uint64_t hardwareBufferUsage) {
+    uint64_t convertedGrallocUsage = AHardwareBuffer_convertToGrallocUsageBits(hardwareBufferUsage);
+    if (convertedGrallocUsage != grallocUsage)
+        return BuildHexFailureMessage(grallocUsage, convertedGrallocUsage, "converToGralloc");
 
-    AHardwareBuffer_convertToGrallocUsageBits(
-            &producerUsage, &consumerUsage, hardwareBufferUsage0, hardwareBufferUsage1);
-    if (producerUsage != grallocProducerUsage)
-        return BuildHexFailureMessage(grallocProducerUsage, producerUsage,
-                "producer");
-    if (consumerUsage != grallocConsumerUsage)
-        return BuildHexFailureMessage(grallocConsumerUsage, consumerUsage,
-                "consumer");
-
-    AHardwareBuffer_convertFromGrallocUsageBits(
-            &usage0, &usage1, grallocProducerUsage, grallocConsumerUsage);
-    if (usage0 != hardwareBufferUsage0)
-        return BuildHexFailureMessage(hardwareBufferUsage0, usage0, "usage0");
-    if (usage1 != hardwareBufferUsage1)
-        return BuildHexFailureMessage(hardwareBufferUsage1, usage1, "usage1");
+    uint64_t convertedHArdwareBufferUsage = AHardwareBuffer_convertFromGrallocUsageBits(grallocUsage);
+    if (convertedHArdwareBufferUsage != grallocUsage)
+        return BuildHexFailureMessage(grallocUsage, convertedHArdwareBufferUsage, "convertFromGralloc");
 
     return testing::AssertionSuccess();
 }
@@ -64,123 +51,58 @@
 // This is a unit test rather than going through AHardwareBuffer because not
 // all flags may be supported by the host device.
 TEST(AHardwareBufferTest, ConvertToAndFromGrallocBits) {
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_CPU_READ,
-            AHARDWAREBUFFER_USAGE0_CPU_READ, 0));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_CPU_READ_OFTEN,
-            AHARDWAREBUFFER_USAGE0_CPU_READ_OFTEN, 0));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_CPU_WRITE, 0,
-            AHARDWAREBUFFER_USAGE0_CPU_WRITE, 0));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_CPU_WRITE_OFTEN, 0,
-            AHARDWAREBUFFER_USAGE0_CPU_WRITE_OFTEN, 0));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_GPU_TEXTURE,
-            AHARDWAREBUFFER_USAGE0_GPU_SAMPLED_IMAGE, 0));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_GPU_RENDER_TARGET,
-            0, AHARDWAREBUFFER_USAGE0_GPU_COLOR_OUTPUT, 0));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_GPU_DATA_BUFFER,
-            AHARDWAREBUFFER_USAGE0_GPU_DATA_BUFFER, 0));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PROTECTED, 0,
-            AHARDWAREBUFFER_USAGE0_PROTECTED_CONTENT, 0));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_SENSOR_DIRECT_DATA,
-            0, AHARDWAREBUFFER_USAGE0_SENSOR_DIRECT_DATA, 0));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_VIDEO_ENCODER,
-            AHARDWAREBUFFER_USAGE0_VIDEO_ENCODE, 0));
+    EXPECT_TRUE(TestUsageConversion((uint64_t)BufferUsage::CPU_READ_RARELY,
+            AHARDWAREBUFFER_USAGE_CPU_READ_RARELY));
+    EXPECT_TRUE(TestUsageConversion((uint64_t)BufferUsage::CPU_READ_OFTEN,
+            AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN));
+    EXPECT_TRUE(TestUsageConversion((uint64_t)BufferUsage::CPU_WRITE_RARELY,
+            AHARDWAREBUFFER_USAGE_CPU_WRITE_RARELY));
+    EXPECT_TRUE(TestUsageConversion((uint64_t)BufferUsage::CPU_WRITE_OFTEN,
+            AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN));
 
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_0, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_0));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_1, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_1));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_2, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_2));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_3, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_3));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_4, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_4));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_5, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_5));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_6, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_6));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_7, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_7));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_8, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_8));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_9, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_9));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_10, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_10));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_11, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_11));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_12, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_12));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_13, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_13));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_14, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_14));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_15, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_15));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_16, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_16));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_17, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_17));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_18, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_18));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_PRIVATE_19, 0,
-            0, AHARDWAREBUFFER_USAGE1_PRODUCER_PRIVATE_19));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_0,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_0));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_1,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_1));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_2,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_2));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_3,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_3));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_4,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_4));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_5,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_5));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_6,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_6));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_7,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_7));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_8,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_8));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_9,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_9));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_10,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_10));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_11,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_11));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_12,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_12));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_13,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_13));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_14,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_14));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_15,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_15));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_16,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_16));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_17,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_17));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_18,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_18));
-    EXPECT_TRUE(TestUsageConversion(0, GRALLOC1_CONSUMER_USAGE_PRIVATE_19,
-            0, AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_19));
+    EXPECT_TRUE(TestUsageConversion((uint64_t)BufferUsage::GPU_TEXTURE,
+            AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE));
+    EXPECT_TRUE(TestUsageConversion((uint64_t)BufferUsage::GPU_RENDER_TARGET,
+            AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT));
+    EXPECT_TRUE(TestUsageConversion((uint64_t)BufferUsage::GPU_DATA_BUFFER,
+            AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER));
+    EXPECT_TRUE(TestUsageConversion((uint64_t)BufferUsage::PROTECTED,
+            AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT));
+    EXPECT_TRUE(TestUsageConversion((uint64_t)BufferUsage::SENSOR_DIRECT_DATA,
+            AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA));
+    EXPECT_TRUE(TestUsageConversion((uint64_t)BufferUsage::VIDEO_ENCODER,
+            AHARDWAREBUFFER_USAGE_VIDEO_ENCODE));
+
+    EXPECT_TRUE(TestUsageConversion(1ull<<28, AHARDWAREBUFFER_USAGE_VENDOR_0));
+    EXPECT_TRUE(TestUsageConversion(1ull<<29, AHARDWAREBUFFER_USAGE_VENDOR_1));
+    EXPECT_TRUE(TestUsageConversion(1ull<<30, AHARDWAREBUFFER_USAGE_VENDOR_2));
+    EXPECT_TRUE(TestUsageConversion(1ull<<31, AHARDWAREBUFFER_USAGE_VENDOR_3));
+    EXPECT_TRUE(TestUsageConversion(1ull<<48, AHARDWAREBUFFER_USAGE_VENDOR_4));
+    EXPECT_TRUE(TestUsageConversion(1ull<<49, AHARDWAREBUFFER_USAGE_VENDOR_5));
+    EXPECT_TRUE(TestUsageConversion(1ull<<50, AHARDWAREBUFFER_USAGE_VENDOR_6));
+    EXPECT_TRUE(TestUsageConversion(1ull<<51, AHARDWAREBUFFER_USAGE_VENDOR_7));
+    EXPECT_TRUE(TestUsageConversion(1ull<<52, AHARDWAREBUFFER_USAGE_VENDOR_8));
+    EXPECT_TRUE(TestUsageConversion(1ull<<53, AHARDWAREBUFFER_USAGE_VENDOR_9));
+    EXPECT_TRUE(TestUsageConversion(1ull<<54, AHARDWAREBUFFER_USAGE_VENDOR_10));
+    EXPECT_TRUE(TestUsageConversion(1ull<<55, AHARDWAREBUFFER_USAGE_VENDOR_11));
+    EXPECT_TRUE(TestUsageConversion(1ull<<56, AHARDWAREBUFFER_USAGE_VENDOR_12));
+    EXPECT_TRUE(TestUsageConversion(1ull<<57, AHARDWAREBUFFER_USAGE_VENDOR_13));
+    EXPECT_TRUE(TestUsageConversion(1ull<<58, AHARDWAREBUFFER_USAGE_VENDOR_14));
+    EXPECT_TRUE(TestUsageConversion(1ull<<59, AHARDWAREBUFFER_USAGE_VENDOR_15));
+    EXPECT_TRUE(TestUsageConversion(1ull<<60, AHARDWAREBUFFER_USAGE_VENDOR_16));
+    EXPECT_TRUE(TestUsageConversion(1ull<<61, AHARDWAREBUFFER_USAGE_VENDOR_17));
+    EXPECT_TRUE(TestUsageConversion(1ull<<62, AHARDWAREBUFFER_USAGE_VENDOR_18));
+    EXPECT_TRUE(TestUsageConversion(1ull<<63, AHARDWAREBUFFER_USAGE_VENDOR_19));
 
     // Test some more complex flag combinations.
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_CPU_WRITE,
-            GRALLOC1_CONSUMER_USAGE_CPU_READ,
-            AHARDWAREBUFFER_USAGE0_CPU_READ | AHARDWAREBUFFER_USAGE0_CPU_WRITE,
-            0));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_CPU_WRITE_OFTEN, 0,
-            AHARDWAREBUFFER_USAGE0_CPU_WRITE_OFTEN, 0));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_GPU_RENDER_TARGET,
-            GRALLOC1_CONSUMER_USAGE_GPU_TEXTURE |
-                    GRALLOC1_CONSUMER_USAGE_PRIVATE_17,
-            AHARDWAREBUFFER_USAGE0_GPU_COLOR_OUTPUT |
-                    AHARDWAREBUFFER_USAGE0_GPU_SAMPLED_IMAGE,
-            AHARDWAREBUFFER_USAGE1_CONSUMER_PRIVATE_17));
-    EXPECT_TRUE(TestUsageConversion(GRALLOC1_PRODUCER_USAGE_SENSOR_DIRECT_DATA,
-            GRALLOC1_CONSUMER_USAGE_GPU_DATA_BUFFER,
-            AHARDWAREBUFFER_USAGE0_GPU_DATA_BUFFER |
-                    AHARDWAREBUFFER_USAGE0_SENSOR_DIRECT_DATA, 0));
+    EXPECT_TRUE(TestUsageConversion(
+            (uint64_t)BufferUsage::CPU_READ_RARELY |
+            (uint64_t)BufferUsage::CPU_WRITE_RARELY,
+            AHARDWAREBUFFER_USAGE_CPU_READ_RARELY | AHARDWAREBUFFER_USAGE_CPU_WRITE_RARELY));
+
+EXPECT_TRUE(TestUsageConversion(
+        (uint64_t)BufferUsage::GPU_RENDER_TARGET | (uint64_t)BufferUsage::GPU_TEXTURE |
+            1ull << 29 | 1ull << 57,
+        AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT | AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE |
+        AHARDWAREBUFFER_USAGE_VENDOR_1 | AHARDWAREBUFFER_USAGE_VENDOR_13));
 }