HWComposer.h revision 8372785879d329f592f6883620b5a32d80d74691
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 308372785879d329f592f6883620b5a32d80d74691Mathias Agopianclass String8; 318372785879d329f592f6883620b5a32d80d74691Mathias Agopian 32a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopianclass HWComposer 33a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian{ 34a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopianpublic: 35a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 36a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian HWComposer(); 37a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian ~HWComposer(); 38a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 39a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian status_t initCheck() const; 40a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 41a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian // tells the HAL what the framebuffer is 42a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian void setFrameBuffer(EGLDisplay dpy, EGLSurface sur); 43a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 44a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian // create a work list for numLayers layer 45a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian status_t createWorkList(size_t numLayers); 46a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 47a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian // Asks the HAL what it can do 48a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian status_t prepare() const; 49a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 50a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian // commits the list 51a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian status_t commit() const; 52a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 53f5f2712854599b4970643c6000fe6ae950a08ba9Antti Hatala // release hardware resources 54f5f2712854599b4970643c6000fe6ae950a08ba9Antti Hatala status_t release() const; 55a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 5645721773e1a68e96da4b6cc04cef276bae7ca3e9Mathias Agopian size_t getNumLayers() const; 5745721773e1a68e96da4b6cc04cef276bae7ca3e9Mathias Agopian hwc_layer_t* getLayers() const; 58a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 598372785879d329f592f6883620b5a32d80d74691Mathias Agopian // for debugging 608372785879d329f592f6883620b5a32d80d74691Mathias Agopian void dump(String8& out, char* scratch, size_t SIZE) const; 618372785879d329f592f6883620b5a32d80d74691Mathias Agopian 62a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopianprivate: 63a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian hw_module_t const* mModule; 64a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian hwc_composer_device_t* mHwc; 65a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian hwc_layer_list_t* mList; 6645721773e1a68e96da4b6cc04cef276bae7ca3e9Mathias Agopian size_t mCapacity; 67a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian hwc_display_t mDpy; 68a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian hwc_surface_t mSur; 69a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian}; 70a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 71a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 72a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian// --------------------------------------------------------------------------- 73a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian}; // namespace android 74a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 75a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian#endif // ANDROID_SF_HWCOMPOSER_H 76