summaryrefslogtreecommitdiff
path: root/gralloc4/src/hidl_common/Allocator.h
blob: e5ce1744a3648a7ac6ac9327e4cca9c72ae7b1ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
 * 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);

const std::string dump();

int isSupported(buffer_descriptor_t *const bufDescriptor);

} // namespace common
} // namespace allocator
} // namespace arm

#endif /* GRALLOC_COMMON_ALLOCATOR_H */