Home | History | Annotate | Download | only in hwc
      1 /*
      2 * Copyright (c) 2016, The Linux Foundation. All rights reserved.
      3 *
      4 * Redistribution and use in source and binary forms, with or without modification, are permitted
      5 * provided that the following conditions are met:
      6 *    * Redistributions of source code must retain the above copyright notice, this list of
      7 *      conditions and the following disclaimer.
      8 *    * Redistributions in binary form must reproduce the above copyright notice, this list of
      9 *      conditions and the following disclaimer in the documentation and/or other materials provided
     10 *      with the distribution.
     11 *    * Neither the name of The Linux Foundation nor the names of its contributors may be used to
     12 *      endorse or promote products derived from this software without specific prior written
     13 *      permission.
     14 *
     15 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     16 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     17 * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
     18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
     19 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     20 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     21 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     22 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     23 */
     24 
     25 #ifndef __HWC_DISPLAY_NULL_H__
     26 #define __HWC_DISPLAY_NULL_H__
     27 
     28 #include <qdMetaData.h>
     29 #include <gralloc_priv.h>
     30 #include "hwc_display.h"
     31 
     32 namespace sdm {
     33 
     34 class HWCDisplayNull : public HWCDisplay {
     35  public:
     36   static int Create(CoreInterface *core_intf, hwc_procs_t const **hwc_procs,
     37                     HWCDisplay **hwc_display);
     38   static void Destroy(HWCDisplay *hwc_display);
     39   virtual int Init();
     40   virtual int Deinit();
     41   virtual int Prepare(hwc_display_contents_1_t *content_list);
     42   virtual int Commit(hwc_display_contents_1_t *content_list);
     43   virtual int EventControl(int event, int enable) { return 0; }
     44   virtual int SetPowerMode(int mode) { return 0; }
     45 
     46   // Framebuffer configurations
     47   virtual int GetDisplayConfigs(uint32_t *configs, size_t *num_configs) {
     48     return HWCDisplay::GetDisplayConfigs(configs, num_configs);
     49   }
     50 
     51   virtual int GetDisplayAttributes(uint32_t config, const uint32_t *display_attributes,
     52                                    int32_t *values);
     53   virtual int GetActiveConfig() { return 0; }
     54   virtual int SetActiveConfig(int index) { return -1; }
     55 
     56   virtual void SetIdleTimeoutMs(uint32_t timeout_ms) { return; }
     57   virtual void SetFrameDumpConfig(uint32_t count, uint32_t bit_mask_layer_type) { return; }
     58   virtual DisplayError SetMaxMixerStages(uint32_t max_mixer_stages) { return kErrorNone; }
     59   virtual DisplayError ControlPartialUpdate(bool enable, uint32_t *pending) { return kErrorNone; }
     60   virtual uint32_t GetLastPowerMode() { return 0; }
     61   virtual int SetFrameBufferResolution(uint32_t x_pixels, uint32_t y_pixels) { return 0; }
     62 
     63   virtual void GetFrameBufferResolution(uint32_t *x_pixels, uint32_t *y_pixels) {
     64     *x_pixels = x_res_;
     65     *y_pixels = y_res_;
     66   }
     67 
     68   virtual void GetPanelResolution(uint32_t *x_pixels, uint32_t *y_pixels) {
     69     *x_pixels = x_res_;
     70     *y_pixels = y_res_;
     71   }
     72 
     73   virtual int SetDisplayStatus(uint32_t display_status) { return 0; }
     74   virtual int OnMinHdcpEncryptionLevelChange(uint32_t min_enc_level) { return 0; }
     75   virtual int Perform(uint32_t operation, ...) { return 0; }
     76   virtual int SetCursorPosition(int x, int y) { return 0; }
     77   virtual void SetSecureDisplay(bool secure_display_active) { return; }
     78 
     79   // Display Configurations
     80   virtual int SetActiveDisplayConfig(int config) { return 0; }
     81   virtual int GetActiveDisplayConfig(uint32_t *config) { return -1; }
     82   virtual int GetDisplayConfigCount(uint32_t *count) { return -1; }
     83   virtual int GetDisplayAttributesForConfig(int config,
     84                                             DisplayConfigVariableInfo *display_attributes) {
     85     return -1;
     86   }
     87   virtual bool IsValidContentList(hwc_display_contents_1_t *content_list) {
     88     return true;
     89   }
     90 
     91   void SetResolution(uint32_t x_res, uint32_t y_res) {
     92     x_res_ = x_res;
     93     y_res_ = y_res;
     94   }
     95 
     96 
     97  private:
     98   HWCDisplayNull(CoreInterface *core_intf, hwc_procs_t const **hwc_procs);
     99   uint32_t x_res_ = 1920;
    100   uint32_t y_res_ = 1080;
    101 };
    102 
    103 }  // namespace sdm
    104 
    105 #endif  // __HWC_DISPLAY_NULL_H__
    106 
    107