gpu.h revision a19f21d925628239ef52c8ce392fa4ada91df6fc
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 2008 The Android Open Source Project
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (c) 2011 Code Aurora Forum. All rights reserved.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License");
66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * you may not use this file except in compliance with the License.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * You may obtain a copy of the License at
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      http://www.apache.org/licenses/LICENSE-2.0
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Unless required by applicable law or agreed to in writing, software
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS,
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See the License for the specific language governing permissions and
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * limitations under the License.
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef GRALLOC_GPU_H_
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GRALLOC_GPU_H_
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <errno.h>
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <pthread.h>
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdlib.h>
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string.h>
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cutils/log.h>
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cutils/ashmem.h>
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <utils/RefBase.h>
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gralloc_priv.h"
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gralloc {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    class IAllocController;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    class gpu_context_t : public alloc_device_t {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public:
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            gpu_context_t(const private_module_t* module,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          android::sp<IAllocController>alloc_ctrl);
38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)            int gralloc_alloc_framebuffer_locked(size_t size, int usage,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 buffer_handle_t* pHandle);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            int gralloc_alloc_framebuffer(size_t size, int usage,
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                          buffer_handle_t* pHandle);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            int gralloc_alloc_buffer(size_t size, int usage,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     buffer_handle_t* pHandle,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     int bufferType, int format,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     int width, int height);
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            int free_impl(private_handle_t const* hnd);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            int alloc_impl(int w, int h, int format, int usage,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           buffer_handle_t* pHandle, int* pStride,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           size_t bufferSize = 0);
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            static int gralloc_alloc(alloc_device_t* dev, int w, int h,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     int format, int usage,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     buffer_handle_t* pHandle,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     int* pStride);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            static int gralloc_free(alloc_device_t* dev, buffer_handle_t handle);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            static int gralloc_alloc_size(alloc_device_t* dev,
64868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                                          int w, int h, int format,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          int usage, buffer_handle_t* pHandle,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          int* pStride, int bufferSize);
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)            static int gralloc_close(struct hw_device_t *dev);
69868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            int get_composition_type() const { return compositionType; }
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private:
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            android::sp<IAllocController> mAllocCtrl;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            int compositionType;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            void getGrallocInformationFromFormat(int inputFormat,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 int *colorFormat,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 int *bufferType);
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    };
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // GRALLOC_GPU_H
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)