1202a77d28ac251545f6f998a974690212309b927Iliyan Malchev/* 2202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * Copyright (C) 2008 The Android Open Source Project 3ccce8eb92266908162dbf92ef1e901204a2b8354Naseer Ahmed * Copyright (c) 2011-2013, The Linux Foundation. All rights reserved. 4202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * 5202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * Licensed under the Apache License, Version 2.0 (the "License"); 6202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * you may not use this file except in compliance with the License. 7202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * You may obtain a copy of the License at 8202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * 9202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * http://www.apache.org/licenses/LICENSE-2.0 10202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * 11202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * Unless required by applicable law or agreed to in writing, software 12202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * distributed under the License is distributed on an "AS IS" BASIS, 13202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * See the License for the specific language governing permissions and 15202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * limitations under the License. 16202a77d28ac251545f6f998a974690212309b927Iliyan Malchev */ 17202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 18202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#ifndef GRALLOC_GPU_H_ 19202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#define GRALLOC_GPU_H_ 20202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 21202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include <errno.h> 22202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include <pthread.h> 23202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include <stdlib.h> 24202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include <string.h> 25202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 26202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include <cutils/log.h> 27202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include <cutils/ashmem.h> 28202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 29202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include "gralloc_priv.h" 30ccce8eb92266908162dbf92ef1e901204a2b8354Naseer Ahmed#include "fb_priv.h" 31202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 32202a77d28ac251545f6f998a974690212309b927Iliyan Malchevnamespace gralloc { 3329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedclass IAllocController; 3429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedclass gpu_context_t : public alloc_device_t { 3529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed public: 3629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed gpu_context_t(const private_module_t* module, 3701d3fd3318a767e6ba75492ed08d57896df95d63Naseer Ahmed IAllocController* alloc_ctrl); 38202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 3929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int gralloc_alloc_buffer(size_t size, int usage, 4029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed buffer_handle_t* pHandle, 4129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int bufferType, int format, 4229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int width, int height); 43202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 4429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int free_impl(private_handle_t const* hnd); 45202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 4629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int alloc_impl(int w, int h, int format, int usage, 4729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed buffer_handle_t* pHandle, int* pStride, 4829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed size_t bufferSize = 0); 49202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 5029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed static int gralloc_alloc(alloc_device_t* dev, int w, int h, 5129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int format, int usage, 5229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed buffer_handle_t* pHandle, 5329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int* pStride); 545aa3a5f06ddae46951851fec19ee2e7e20d914cfNaseer Ahmed int gralloc_alloc_framebuffer_locked(size_t size, int usage, 555aa3a5f06ddae46951851fec19ee2e7e20d914cfNaseer Ahmed buffer_handle_t* pHandle); 565aa3a5f06ddae46951851fec19ee2e7e20d914cfNaseer Ahmed 575aa3a5f06ddae46951851fec19ee2e7e20d914cfNaseer Ahmed int gralloc_alloc_framebuffer(size_t size, int usage, 585aa3a5f06ddae46951851fec19ee2e7e20d914cfNaseer Ahmed buffer_handle_t* pHandle); 59202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed static int gralloc_free(alloc_device_t* dev, buffer_handle_t handle); 61202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed static int gralloc_alloc_size(alloc_device_t* dev, 6329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int w, int h, int format, 6429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int usage, buffer_handle_t* pHandle, 6529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int* pStride, int bufferSize); 66202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed static int gralloc_close(struct hw_device_t *dev); 68202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed private: 7001d3fd3318a767e6ba75492ed08d57896df95d63Naseer Ahmed IAllocController* mAllocCtrl; 7129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void getGrallocInformationFromFormat(int inputFormat, 7229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int *bufferType); 7329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed}; 74202a77d28ac251545f6f998a974690212309b927Iliyan Malchev} 75202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#endif // GRALLOC_GPU_H 76