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;