summaryrefslogtreecommitdiff
path: root/libs/ui/Gralloc1.cpp
diff options
context:
space:
mode:
author Craig Donner <cdonner@google.com> 2016-10-21 15:23:44 -0700
committer Craig Donner <cdonner@google.com> 2016-11-11 11:35:06 -0800
commit6ebc46a7c01b22bc19d3c00b493f8d930b15b43a (patch)
tree6f68e8f1cf2ccde71eece4a037c8e32b4f0cd0b2 /libs/ui/Gralloc1.cpp
parentcd7dedbe69f8c90d351b97b1acea2bb3635b68ca (diff)
Add layered buffer support to libui and libgui.
Bug: 31686534 Test: manual Change-Id: Ia40270701467f4b785660324cad883e7da08989a
Diffstat (limited to 'libs/ui/Gralloc1.cpp')
-rw-r--r--libs/ui/Gralloc1.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/libs/ui/Gralloc1.cpp b/libs/ui/Gralloc1.cpp
index 4c73ce4535..367d1ce58b 100644
--- a/libs/ui/Gralloc1.cpp
+++ b/libs/ui/Gralloc1.cpp
@@ -77,6 +77,17 @@ gralloc1_error_t Descriptor::setFormat(android_pixel_format_t format)
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 @@ bool Device::loadFunctions()
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;
}