Add layered buffer support to libui and libgui.
Bug: 31686534
Test: manual
Change-Id: Ia40270701467f4b785660324cad883e7da08989a
diff --git a/libs/ui/Gralloc1.cpp b/libs/ui/Gralloc1.cpp
index 4c73ce4..367d1ce 100644
--- a/libs/ui/Gralloc1.cpp
+++ b/libs/ui/Gralloc1.cpp
@@ -77,6 +77,17 @@
mShimDevice.mDevice, mDeviceId, format, &mFormat);
}
+gralloc1_error_t Descriptor::setLayerCount(uint32_t layerCount)
+{
+ if (mShimDevice.hasCapability(GRALLOC1_CAPABILITY_LAYERED_BUFFERS)) {
+ return setHelper<uint32_t>(mShimDevice.mFunctions.setLayerCount.pfn,
+ mShimDevice.mDevice, mDeviceId, layerCount, &mLayerCount);
+ } else {
+ // Layered buffers are not supported on this device.
+ return GRALLOC1_ERROR_UNSUPPORTED;
+ }
+}
+
gralloc1_error_t Descriptor::setProducerUsage(gralloc1_producer_usage_t usage)
{
return setHelper<uint64_t>(mShimDevice.mFunctions.setProducerUsage.pfn,
@@ -366,6 +377,15 @@
mFunctions.allocate.load(mDevice, false);
}
+ if (hasCapability(GRALLOC1_CAPABILITY_LAYERED_BUFFERS)) {
+ if (!mFunctions.setLayerCount.load(mDevice, true)) {
+ return false;
+ }
+ if (!mFunctions.getLayerCount.load(mDevice, true)) {
+ return false;
+ }
+ }
+
return true;
}