1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * Copyright (c) 2011-2013, The Linux Foundation. All rights reserved. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 #ifndef GRALLOC_GPU_H_ 19 #define GRALLOC_GPU_H_ 20 21 #include <errno.h> 22 #include <pthread.h> 23 #include <stdlib.h> 24 #include <string.h> 25 26 #include <cutils/log.h> 27 #include <cutils/ashmem.h> 28 29 #include "gralloc_priv.h" 30 #include "fb_priv.h" 31 32 namespace gralloc { 33 class IAllocController; 34 class gpu_context_t : public alloc_device_t { 35 public: 36 gpu_context_t(const private_module_t* module, 37 IAllocController* alloc_ctrl); 38 39 int gralloc_alloc_buffer(size_t size, int usage, 40 buffer_handle_t* pHandle, 41 int bufferType, int format, 42 int width, int height); 43 44 int free_impl(private_handle_t const* hnd); 45 46 int alloc_impl(int w, int h, int format, int usage, 47 buffer_handle_t* pHandle, int* pStride, 48 size_t bufferSize = 0); 49 50 static int gralloc_alloc(alloc_device_t* dev, int w, int h, 51 int format, int usage, 52 buffer_handle_t* pHandle, 53 int* pStride); 54 int gralloc_alloc_framebuffer_locked(size_t size, int usage, 55 buffer_handle_t* pHandle); 56 57 int gralloc_alloc_framebuffer(size_t size, int usage, 58 buffer_handle_t* pHandle); 59 60 static int gralloc_free(alloc_device_t* dev, buffer_handle_t handle); 61 62 static int gralloc_alloc_size(alloc_device_t* dev, 63 int w, int h, int format, 64 int usage, buffer_handle_t* pHandle, 65 int* pStride, int bufferSize); 66 67 static int gralloc_close(struct hw_device_t *dev); 68 69 private: 70 IAllocController* mAllocCtrl; 71 void getGrallocInformationFromFormat(int inputFormat, 72 int *bufferType); 73 }; 74 } 75 #endif // GRALLOC_GPU_H 76