blob: 8fdd5bac04ffa1a3137657e1def24072fc18d8b4 [file] [log] [blame]
/*
* Copyright (C) 2020 ARM Limited. All rights reserved.
*
* Copyright 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef GRALLOC_COMMON_ALLOCATOR_H
#define GRALLOC_COMMON_ALLOCATOR_H
#include "4.x/gralloc_allocator_hidl_header.h"
#include <functional>
#include "core/mali_gralloc_bufferdescriptor.h"
#include "BufferDescriptor.h"
namespace arm
{
namespace allocator
{
namespace common
{
using android::hardware::hidl_handle;
using android::hardware::hidl_vec;
/*
* Allocates buffers with the properties specified by the descriptor
*
* @param bufferDescriptor: Specifies the properties of the buffers to allocate.
* @param count: Number of buffers to allocate.
* @param hidl_cb [in] HIDL callback function generating -
* error : NONE upon success. Otherwise,
* BAD_DESCRIPTOR when the descriptor is invalid.
* NO_RESOURCES when the allocation cannot be fulfilled
* UNSUPPORTED when any of the property encoded in the descriptor
* is not supported
* stride: Number of pixels between two consecutive rows of the
* buffers, when the concept of consecutive rows is defined.
* buffers: An array of raw handles to the newly allocated buffers
* @param fb_allocator [in] function to use for allocation of buffers with GRALLOC_USAGE_HW_FB
*/
void allocate(const buffer_descriptor_t &bufferDescriptor, uint32_t count, IAllocator::allocate_cb hidl_cb,
std::function<int(const buffer_descriptor_t *, buffer_handle_t *)> fb_allocator = nullptr);
} // namespace common
} // namespace allocator
} // namespace arm
#endif /* GRALLOC_COMMON_ALLOCATOR_H */