HWComposer.h revision a350ff98692b3a50cad5cc93f9f83221242ca86a
1a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian/* 2a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * Copyright (C) 2010 The Android Open Source Project 3a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * 4a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 5a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * you may not use this file except in compliance with the License. 6a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * You may obtain a copy of the License at 7a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * 8a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 9a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * 10a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * Unless required by applicable law or agreed to in writing, software 11a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 12a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * See the License for the specific language governing permissions and 14a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * limitations under the License. 15a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian */ 16a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 17a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian#ifndef ANDROID_SF_HWCOMPOSER_H 18a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian#define ANDROID_SF_HWCOMPOSER_H 19a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 20a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian#include <stdint.h> 21a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian#include <sys/types.h> 22a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 23a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian#include <EGL/egl.h> 24a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 25a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian#include <hardware/hwcomposer.h> 26a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 27a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopiannamespace android { 28a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian// --------------------------------------------------------------------------- 29a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 30a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopianclass HWComposer 31a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian{ 32a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopianpublic: 33a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 34a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian HWComposer(); 35a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian ~HWComposer(); 36a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 37a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian status_t initCheck() const; 38a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 39a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian // tells the HAL what the framebuffer is 40a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian void setFrameBuffer(EGLDisplay dpy, EGLSurface sur); 41a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 42a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian // create a work list for numLayers layer 43a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian status_t createWorkList(size_t numLayers); 44a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 45a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian // Asks the HAL what it can do 46a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian status_t prepare() const; 47a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 48a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian // commits the list 49a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian status_t commit() const; 50a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 51a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 52a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian typedef hwc_layer_t const * const_iterator; 53a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian typedef hwc_layer_t* iterator; 54a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 55a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian iterator begin(); 56a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian iterator end(); 57a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 58a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopianprivate: 59a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian hw_module_t const* mModule; 60a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian hwc_composer_device_t* mHwc; 61a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian hwc_layer_list_t* mList; 62a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian hwc_display_t mDpy; 63a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian hwc_surface_t mSur; 64a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian}; 65a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 66a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 67a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian// --------------------------------------------------------------------------- 68a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian}; // namespace android 69a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 70a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian#endif // ANDROID_SF_HWCOMPOSER_H 71