diff options
| author | 2016-10-21 15:23:44 -0700 | |
|---|---|---|
| committer | 2016-11-11 11:35:06 -0800 | |
| commit | 6ebc46a7c01b22bc19d3c00b493f8d930b15b43a (patch) | |
| tree | 6f68e8f1cf2ccde71eece4a037c8e32b4f0cd0b2 /libs/ui/Gralloc1.cpp | |
| parent | cd7dedbe69f8c90d351b97b1acea2bb3635b68ca (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.cpp | 20 |
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; } |