1f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li/* 2cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Copyright (c) 2014 Intel Corporation 3cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// 4cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Licensed under the Apache License, Version 2.0 (the "License"); 5cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// you may not use this file except in compliance with the License. 6cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// You may obtain a copy of the License at 7cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// 8cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// http://www.apache.org/licenses/LICENSE-2.0 9cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// 10cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Unless required by applicable law or agreed to in writing, software 11cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// distributed under the License is distributed on an "AS IS" BASIS, 12cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// See the License for the specific language governing permissions and 14cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// limitations under the License. 15cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika*/ 16f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li#ifndef ANN_OVERLAY_PLANE_H 17f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li#define ANN_OVERLAY_PLANE_H 18f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 19f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li#include <utils/KeyedVector.h> 20f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li#include <hal_public.h> 21f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li#include <DisplayPlane.h> 22f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li#include <BufferMapper.h> 230594c42af26255fd8d3d7d39c0cb0e2da5b8841bThierry Strudel#include <ips/common/Wsbm.h> 240594c42af26255fd8d3d7d39c0cb0e2da5b8841bThierry Strudel#include <ips/common/OverlayPlaneBase.h> 250594c42af26255fd8d3d7d39c0cb0e2da5b8841bThierry Strudel#include <ips/common/RotationBufferProvider.h> 26f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 27f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Linamespace android { 28f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Linamespace intel { 29f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 30c0529447ae16f023dfab2978ea2b245f368e893bAndy Qiuclass AnnOverlayPlane : public OverlayPlaneBase { 31f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Lipublic: 32f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li AnnOverlayPlane(int index, int disp); 33f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual ~AnnOverlayPlane(); 34f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 35af3bf2227c951a59e2dcc44ab90790d247225375Andy Qiu bool setDataBuffer(uint32_t handle); 36af3bf2227c951a59e2dcc44ab90790d247225375Andy Qiu 37f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual void setTransform(int transform); 38f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual void setZOrderConfig(ZOrderConfig& config, void *nativeConfig); 39f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 40f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li // plane operations 41c0529447ae16f023dfab2978ea2b245f368e893bAndy Qiu virtual bool flip(void *ctx); 42f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual bool reset(); 43f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual bool enable(); 44f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual bool disable(); 459d1d3833469f52dbd2a017702bf0116fddc703bcAndy Qiu virtual void postFlip(); 46f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual void* getContext() const; 47f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual bool initialize(uint32_t bufferCount); 48f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual void deinitialize(); 49c0529447ae16f023dfab2978ea2b245f368e893bAndy Qiu virtual bool rotatedBufferReady(BufferMapper& mapper, BufferMapper* &rotatedMapper); 50c0529447ae16f023dfab2978ea2b245f368e893bAndy Qiu virtual bool useOverlayRotation(BufferMapper& mapper); 51f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 5250fdcdd34912ff25d41e4d339298043d97e56ea3Sun, Jianprivate: 5350fdcdd34912ff25d41e4d339298043d97e56ea3Sun, Jian void signalVideoRotation(BufferMapper& mapper); 54979bcaa58b8db871baf3fd8cc03071d35190f194Lei Zhang bool isSettingRotBitAllowed(); 55f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Liprotected: 56f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual bool setDataBuffer(BufferMapper& mapper); 57c0529447ae16f023dfab2978ea2b245f368e893bAndy Qiu virtual bool flush(uint32_t flags); 58f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual bool bufferOffsetSetup(BufferMapper& mapper); 5903ec9fafe981e98a32150dfb1ded2da6a84c212dAndy Qiu virtual bool coordinateSetup(BufferMapper& mapper); 60f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual bool scalingSetup(BufferMapper& mapper); 61f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 62f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li virtual void resetBackBuffer(int buf); 63f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 64c0529447ae16f023dfab2978ea2b245f368e893bAndy Qiu RotationBufferProvider *mRotationBufProvider; 65f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 66f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li // rotation config 67f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li uint32_t mRotationConfig; 68f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li // z order config 69f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li uint32_t mZOrderConfig; 70c0529447ae16f023dfab2978ea2b245f368e893bAndy Qiu bool mUseOverlayRotation; 71f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li // hardware context 72f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li struct intel_dc_plane_ctx mContext; 73af3bf2227c951a59e2dcc44ab90790d247225375Andy Qiu 74f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li}; 75f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 76f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li} // namespace intel 77f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li} // namespace android 78f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 79f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li#endif /* ANN_OVERLAY_PLANE_H */ 80f6d5b36e320f093f08855d64fa3d565eacae3c4bJackie Li 81