1a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson/* 2a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* Copyright (c) 2013 The Linux Foundation. All rights reserved. 3a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* 4a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* Redistribution and use in source and binary forms, with or without 5a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* modification, are permitted provided that the following conditions are 6a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* met: 7a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* * Redistributions of source code must retain the above copyright 8a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* notice, this list of conditions and the following disclaimer. 9a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* * Redistributions in binary form must reproduce the above 10a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* copyright notice, this list of conditions and the following 11a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* disclaimer in the documentation and/or other materials provided 12a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* with the distribution. 13a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* * Neither the name of The Linux Foundation. nor the names of its 14a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* contributors may be used to endorse or promote products derived 15a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* from this software without specific prior written permission. 16a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* 17a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 18a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 20a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 21a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 24a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 26a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson*/ 29a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson 30a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson 31a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson#ifndef HWC_VIRTUAL_DISPLAY_H 32a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson#define HWC_VIRTUAL_DISPLAY_H 33a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson 34a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson#include <linux/fb.h> 35a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson 36a653efede03423aa840da24634f1ec6f20796f1eSimon Wilsonstruct hwc_context_t; 37a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson 38a653efede03423aa840da24634f1ec6f20796f1eSimon Wilsonnamespace qhwc { 39a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson 40a653efede03423aa840da24634f1ec6f20796f1eSimon Wilsonclass VirtualDisplay 41a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson{ 42a653efede03423aa840da24634f1ec6f20796f1eSimon Wilsonpublic: 43a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson VirtualDisplay(hwc_context_t* ctx); 44a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson ~VirtualDisplay(); 45a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson int configure(); 46a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson void getAttributes(int& width, int& height); 47a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson int teardown(); 48a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson bool isConnected() { 49a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson return mHwcContext->dpyAttr[HWC_DISPLAY_VIRTUAL].connected; 50a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson } 51a653efede03423aa840da24634f1ec6f20796f1eSimon Wilsonprivate: 52a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson bool openFrameBuffer(); 53a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson bool closeFrameBuffer(); 54a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson void setAttributes(); 55a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson void initResolution(uint32_t &extW, uint32_t &extH); 56a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson void setToPrimary(uint32_t maxArea, uint32_t priW, uint32_t priH, 57a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson uint32_t &extW, uint32_t &extH); 58a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson void setDownScaleMode(uint32_t maxArea); 59a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson 60a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson int mFd; 61a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson hwc_context_t *mHwcContext; 62a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson fb_var_screeninfo mVInfo; 63a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson}; 64a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson}; //qhwc 65a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson// --------------------------------------------------------------------------- 66a653efede03423aa840da24634f1ec6f20796f1eSimon Wilson#endif //HWC_VIRTUAL_DISPLAY_H 67