summaryrefslogtreecommitdiff
path: root/libs/ui/GraphicBuffer.cpp
diff options
context:
space:
mode:
author John Reck <jreck@google.com> 2023-12-08 11:30:37 -0500
committer John Reck <jreck@google.com> 2023-12-14 17:49:59 -0500
commitd727e9c78f799534ea606e3793d50fc73a4566d7 (patch)
tree2abe6c45f46c40daabeb348bc7377eb446c7706c /libs/ui/GraphicBuffer.cpp
parent1fcaffe2ed5f7312ea0bcbf9abd2d3617bd70bd0 (diff)
Add AHB_allocate2 + get/setDataSpace
Also fix that some ADataSpace enum values were not prefixed with ADATASPACE_* Test: atest AHardwareBufferTest Bug: 315475131 Change-Id: Ie92f416a209501fa8fdc9b3593ea6d3bb68eaa48
Diffstat (limited to 'libs/ui/GraphicBuffer.cpp')
-rw-r--r--libs/ui/GraphicBuffer.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/libs/ui/GraphicBuffer.cpp b/libs/ui/GraphicBuffer.cpp
index 429760ffe0..c007fdb587 100644
--- a/libs/ui/GraphicBuffer.cpp
+++ b/libs/ui/GraphicBuffer.cpp
@@ -106,6 +106,26 @@ GraphicBuffer::GraphicBuffer(const native_handle_t* inHandle, HandleWrapMethod m
inUsage, inStride);
}
+GraphicBuffer::GraphicBuffer(const GraphicBufferAllocator::AllocationRequest& request)
+ : GraphicBuffer() {
+ GraphicBufferAllocator& allocator = GraphicBufferAllocator::get();
+ auto result = allocator.allocate(request);
+ mInitCheck = result.status;
+ if (result.status == NO_ERROR) {
+ handle = result.handle;
+ stride = result.stride;
+
+ mBufferMapper.getTransportSize(handle, &mTransportNumFds, &mTransportNumInts);
+
+ width = static_cast<int>(request.width);
+ height = static_cast<int>(request.height);
+ format = request.format;
+ layerCount = request.layerCount;
+ usage = request.usage;
+ usage_deprecated = int(usage);
+ }
+}
+
GraphicBuffer::~GraphicBuffer()
{
ATRACE_CALL();
@@ -143,6 +163,10 @@ ANativeWindowBuffer* GraphicBuffer::getNativeBuffer() const
const_cast<GraphicBuffer*>(this));
}
+status_t GraphicBuffer::getDataspace(ui::Dataspace* outDataspace) const {
+ return mBufferMapper.getDataspace(handle, outDataspace);
+}
+
status_t GraphicBuffer::reallocate(uint32_t inWidth, uint32_t inHeight,
PixelFormat inFormat, uint32_t inLayerCount, uint64_t inUsage)
{