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