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 PHYSICAL_DEVICE_H 17 #define PHYSICAL_DEVICE_H 18 19 #include <DisplayPlane.h> 20 #include <IVsyncControl.h> 21 #include <IBlankControl.h> 22 #include <common/observers/VsyncEventObserver.h> 23 #include <common/base/HwcLayerList.h> 24 #include <common/base/Drm.h> 25 #include <IDisplayDevice.h> 26 27 namespace android { 28 namespace intel { 29 30 class Hwcomposer; 31 32 // Base class for primary and external devices 33 class PhysicalDevice : public IDisplayDevice { 34 public: 35 PhysicalDevice(uint32_t disp, uint32_t type, Hwcomposer& hwc, DisplayPlaneManager& dpm); 36 virtual ~PhysicalDevice(); 37 public: 38 virtual bool prePrepare(hwc_display_contents_1_t *display); 39 virtual bool prepare(hwc_display_contents_1_t *display); 40 virtual bool commit(hwc_display_contents_1_t *display, IDisplayContext *context); 41 42 virtual bool vsyncControl(bool enabled); 43 virtual bool blank(bool blank); 44 virtual bool getDisplaySize(int *width, int *height); 45 virtual bool getDisplayConfigs(uint32_t *configs, 46 size_t *numConfigs); 47 virtual bool getDisplayAttributes(uint32_t config, 48 const uint32_t *attributes, 49 int32_t *values); 50 virtual bool compositionComplete(); 51 52 virtual bool setPowerMode(int mode); 53 virtual int getActiveConfig(); 54 virtual bool setActiveConfig(int index); 55 56 // display config operations 57 virtual void removeDisplayConfigs(); 58 virtual bool detectDisplayConfigs(); 59 60 // device related operations initCheck()61 virtual bool initCheck() const { return mInitialized; } 62 virtual bool initialize(); 63 virtual void deinitialize(); 64 virtual bool isConnected() const; 65 virtual const char* getName() const; 66 virtual int getType() const; 67 68 //events 69 virtual void onVsync(int64_t timestamp); 70 71 virtual void dump(Dump& d); 72 73 protected: 74 void onGeometryChanged(hwc_display_contents_1_t *list); 75 bool updateDisplayConfigs(); 76 virtual IVsyncControl* createVsyncControl() = 0; 77 virtual IBlankControl* createBlankControl() = 0; 78 friend class VsyncEventObserver; 79 80 protected: 81 uint32_t mDisp; 82 uint32_t mType; 83 const char *mName; 84 85 Hwcomposer& mHwc; 86 DisplayPlaneManager& mDisplayPlaneManager; 87 88 // display configs 89 Vector<DisplayConfig*> mDisplayConfigs; 90 int mActiveDisplayConfig; 91 92 93 IBlankControl *mBlankControl; 94 VsyncEventObserver *mVsyncObserver; 95 96 // layer list 97 HwcLayerList *mLayerList; 98 bool mConnected; 99 bool mBlank; 100 101 // lock 102 Mutex mLock; 103 104 // DPMS on (1) or off (0) 105 int mDisplayState; 106 bool mInitialized; 107 }; 108 109 } 110 } 111 112 #endif /* PHYSICAL_DEVICE_H */ 113