IQHDMIClient.h revision 07bbf1e89c031a5d41a7561433e832d396c311a5
107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani/*
207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* Copyright (c) 2013 The Linux Foundation. All rights reserved.
307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*
407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* Redistribution and use in source and binary forms, with or without
507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* modification, are permitted provided that the following conditions are
607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* met:
707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*    * Redistributions of source code must retain the above copyright
807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*      notice, this list of conditions and the following disclaimer.
907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*    * Redistributions in binary form must reproduce the above
1007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*      copyright notice, this list of conditions and the following
1107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*      disclaimer in the documentation and/or other materials provided
1207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*      with the distribution.
1307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*    * Neither the name of The Linux Foundation. nor the names of its
1407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*      contributors may be used to endorse or promote products derived
1507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*      from this software without specific prior written permission.
1607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*
1707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
1807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
2007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
2107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
2407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
2607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
2707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani*/
2907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani
3007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#ifndef HWC_AD_H
3107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#define HWC_AD_H
3207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani
3307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#include <overlayUtils.h>
3407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#include <hwc_utils.h>
3507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani
3607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistruct hwc_context_t;
3707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani
3807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malaninamespace qhwc {
3907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani
4007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malaniclass AssertiveDisplay {
4107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanipublic:
4207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    AssertiveDisplay(hwc_context_t *ctx);
4307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    void markDoable(hwc_context_t *ctx, const hwc_display_contents_1_t* list);
4407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    bool prepare(hwc_context_t *ctx, const hwc_rect_t& crop,
4507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani            const overlay::utils::Whf& whf,
4607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani            const private_handle_t *hnd);
4707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    bool draw(hwc_context_t *ctx, int fd, uint32_t offset);
4807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    //Resets a few members on each draw round
4907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    void reset() { mDoable = false;
5007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani            mDest = overlay::utils::OV_INVALID;
5107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    }
5207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    bool isDoable() const { return mDoable; }
5307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    int getDstFd() const;
5407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    uint32_t getDstOffset() const;
5507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani
5607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malaniprivate:
5707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    bool mDoable;
5807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    bool mTurnedOff;
5907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    //State of feature existence on certain devices and configs.
6007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    bool mFeatureEnabled;
6107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    overlay::utils::eDest mDest;
6207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani    void turnOffAD();
6307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani};
6407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani
6507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani}
6607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#endif
67