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