/* * 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 #include "core/mali_gralloc_bufferdescriptor.h" #include "BufferDescriptor.h" #include using android::hardware::graphics::allocator::V4_0::IAllocator; using android::hardware::graphics::mapper::V4_0::Error; 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 fb_allocator = nullptr); const std::string dump(); bool isSupported(buffer_descriptor_t *const bufDescriptor); } // namespace common } // namespace allocator } // namespace arm #endif /* GRALLOC_COMMON_ALLOCATOR_H */