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