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