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