1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * Copyright (c) 2011-2014, 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 28 #include "gralloc_priv.h" 29 #include "fb_priv.h" 30 31 namespace gralloc { 32 class IAllocController; 33 class gpu_context_t : public alloc_device_t { 34 public: 35 gpu_context_t(const private_module_t* module, 36 IAllocController* alloc_ctrl); 37 38 int gralloc_alloc_buffer(size_t size, int usage, 39 buffer_handle_t* pHandle, 40 int bufferType, int format, 41 int width, int height); 42 43 int free_impl(private_handle_t const* hnd); 44 45 int alloc_impl(int w, int h, int format, int usage, 46 buffer_handle_t* pHandle, int* pStride, 47 size_t bufferSize = 0); 48 49 static int gralloc_alloc(alloc_device_t* dev, int w, int h, 50 int format, int usage, 51 buffer_handle_t* pHandle, 52 int* pStride); 53 int gralloc_alloc_framebuffer_locked(int usage, 54 buffer_handle_t* pHandle); 55 56 int gralloc_alloc_framebuffer(int usage, 57 buffer_handle_t* pHandle); 58 59 static int gralloc_free(alloc_device_t* dev, buffer_handle_t handle); 60 61 static int gralloc_alloc_size(alloc_device_t* dev, 62 int w, int h, int format, 63 int usage, buffer_handle_t* pHandle, 64 int* pStride, int bufferSize); 65 66 static int gralloc_close(struct hw_device_t *dev); 67 68 private: 69 IAllocController* mAllocCtrl; 70 void getGrallocInformationFromFormat(int inputFormat, 71 int *bufferType); 72 }; 73 } 74 #endif // GRALLOC_GPU_H 75