1 /*
2  * Copyright (C) 2016, 2018-2019 ARM Limited. All rights reserved.
3  *
4  * Copyright (C) 2008 The Android Open Source Project
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 #ifndef MALI_GRALLOC_ION_H_
20 #define MALI_GRALLOC_ION_H_
21 
22 #include "mali_gralloc_module.h"
23 #include "mali_gralloc_bufferdescriptor.h"
24 
25 /*
26  *  Allocates ION buffers
27  *
28  * @param descriptors     [in]    Buffer request descriptors
29  * @param numDescriptors  [in]    Number of descriptors
30  * @param pHandle         [out]   Handle for each allocated buffer
31  * @param shared_backend  [out]   Shared buffers flag
32  * @param ion_fd          [in]    Optional fd of an allocated ION buffer
33  *
34  * @return File handle which can be used for allocation, on success
35  *         -1, otherwise.
36  *
37  * In the case ion_fd != -1, this functions wraps ion_fd in a buffer_handle_t
38  * instead.
39  */
40 int mali_gralloc_ion_allocate(const gralloc_buffer_descriptor_t *descriptors,
41                               uint32_t numDescriptors, buffer_handle_t *pHandle,
42                               bool *alloc_from_backing_store, int ion_fd = -1);
43 void mali_gralloc_ion_free(private_handle_t * const hnd);
44 int mali_gralloc_ion_sync_start(const private_handle_t * const hnd,
45                                 const bool read, const bool write);
46 int mali_gralloc_ion_sync_end(const private_handle_t * const hnd,
47                               const bool read, const bool write);
48 int mali_gralloc_ion_map(private_handle_t *hnd);
49 void mali_gralloc_ion_unmap(private_handle_t *hnd);
50 void mali_gralloc_ion_close(void);
51 
52 int import_exynos_ion_handles(private_handle_t *hnd);
53 void free_exynos_ion_handles(private_handle_t *hnd);
54 
55 int mali_gralloc_ion_open(void);
56 
57 #if GRALLOC_USE_ASHMEM_METADATA != 1
58 int alloc_metadata(void);
59 #endif
60 
61 #endif /* MALI_GRALLOC_ION_H_ */
62