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