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