Use gralloc usage conversion library

Converting from ..graphics.allocator@2.0 usage to gralloc0 usage isn't
quite as simple as ORing and truncating, which is what the default
implementation was doing. Switch to using library functions that do it
correctly.

Test: boot bullhead
Change-Id: Ibe644b53655e191b9bca9d619825a8918e8fc365
diff --git a/libs/ui/GraphicBuffer.cpp b/libs/ui/GraphicBuffer.cpp
index 9006178..6e84730 100644
--- a/libs/ui/GraphicBuffer.cpp
+++ b/libs/ui/GraphicBuffer.cpp
@@ -16,12 +16,12 @@
 
 #define LOG_TAG "GraphicBuffer"
 
-#include <cutils/atomic.h>
-
 #include <ui/GraphicBuffer.h>
 
 #include <cutils/atomic.h>
 
+#include <grallocusage/GrallocUsageConversion.h>
+
 #include <ui/GrallocMapper.h>
 #include <ui/GraphicBufferAllocator.h>
 #include <ui/GraphicBufferMapper.h>
@@ -114,7 +114,7 @@
     stride = static_cast<int>(inStride);
     format = inFormat;
     layerCount = inLayerCount;
-    usage  = static_cast<int>(inConsumerUsage | inProducerUsage);
+    usage = android_convertGralloc1To0Usage(inProducerUsage, inConsumerUsage);
     handle = inHandle;
 }
 
@@ -221,7 +221,7 @@
         height = static_cast<int>(inHeight);
         format = inFormat;
         layerCount = inLayerCount;
-        usage = static_cast<int>(inProducerUsage | inConsumerUsage);
+        usage = android_convertGralloc1To0Usage(inProducerUsage, inConsumerUsage);
         stride = static_cast<int>(outStride);
     }
     return err;