14a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh/* 24a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved. 34a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* 44a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* Redistribution and use in source and binary forms, with or without modification, are permitted 54a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* provided that the following conditions are met: 64a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* * Redistributions of source code must retain the above copyright notice, this list of 74a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* conditions and the following disclaimer. 84a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* * Redistributions in binary form must reproduce the above copyright notice, this list of 94a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* conditions and the following disclaimer in the documentation and/or other materials provided 104a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* with the distribution. 114a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* * Neither the name of The Linux Foundation nor the names of its contributors may be used to 124a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* endorse or promote products derived from this software without specific prior written 134a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* permission. 144a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* 154a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 164a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 174a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 184a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 194a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 204a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 214a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 224a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 234a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh*/ 244a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 254a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#ifndef __DISPLAY_BASE_H__ 264a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#define __DISPLAY_BASE_H__ 274a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 284a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include <core/display_interface.h> 294a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include <private/strategy_interface.h> 304a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include <private/color_interface.h> 314a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 324a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include <map> 334a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include <mutex> 344a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include <string> 354a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include <vector> 364a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 374a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include "hw_interface.h" 384a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include "comp_manager.h" 394a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include "color_manager.h" 404a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#include "hw_events_interface.h" 414a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 424a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanhnamespace sdm { 434a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 444a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanhusing std::recursive_mutex; 454a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanhusing std::lock_guard; 464a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 474a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanhclass DisplayBase : public DisplayInterface, DumpImpl { 484a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh public: 494a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayBase(DisplayType display_type, DisplayEventHandler *event_handler, 504a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh HWDeviceType hw_device_type, BufferSyncHandler *buffer_sync_handler, 514a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh BufferAllocator *buffer_allocator, CompManager *comp_manager, 524a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh HWInfoInterface *hw_info_intf); 534a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual ~DisplayBase() { } 544a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError Init(); 554a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError Deinit(); 564a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayError Prepare(LayerStack *layer_stack); 574a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayError Commit(LayerStack *layer_stack); 584a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError Flush(); 594a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetDisplayState(DisplayState *state); 604a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetNumVariableInfoConfigs(uint32_t *count); 614a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetConfig(uint32_t index, DisplayConfigVariableInfo *variable_info); 624a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetConfig(DisplayConfigFixedInfo *variable_info); 634a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetActiveConfig(uint32_t *index); 644a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetVSyncState(bool *enabled); 654a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetDisplayState(DisplayState state); 664a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetActiveConfig(uint32_t index); 674a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetActiveConfig(DisplayConfigVariableInfo *variable_info) { 684a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh return kErrorNotSupported; 694a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh } 704a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetMaxMixerStages(uint32_t max_mixer_stages); 714a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError ControlPartialUpdate(bool enable, uint32_t *pending) { 724a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh return kErrorNotSupported; 734a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh } 744a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError DisablePartialUpdateOneFrame() { 754a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh return kErrorNotSupported; 764a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh } 774a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetDisplayMode(uint32_t mode) { 784a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh return kErrorNotSupported; 794a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh } 804a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual bool IsUnderscanSupported() { 814a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh return false; 824a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh } 834a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetPanelBrightness(int level) { 844a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh return kErrorNotSupported; 854a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh } 864a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError CachePanelBrightness(int level) { 874a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh return kErrorNotSupported; 884a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh } 894a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError OnMinHdcpEncryptionLevelChange(uint32_t min_enc_level) { 904a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh return kErrorNotSupported; 914a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh } 924a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError ColorSVCRequestRoute(const PPDisplayAPIPayload &in_payload, 934a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh PPDisplayAPIPayload *out_payload, 944a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh PPPendingParams *pending_action); 954a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetColorModeCount(uint32_t *mode_count); 964a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetColorModes(uint32_t *mode_count, std::vector<std::string> *color_modes); 974a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetColorModeAttr(const std::string &color_mode, AttrVal *attr); 984a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetColorMode(const std::string &color_mode); 994a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetColorTransform(const uint32_t length, const double *color_transform); 1004a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetDefaultColorMode(std::string *color_mode); 1014a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError ApplyDefaultDisplayMode(void); 1024a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetCursorPosition(int x, int y); 1034a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetRefreshRateRange(uint32_t *min_refresh_rate, uint32_t *max_refresh_rate); 1044a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetPanelBrightness(int *level) { 1054a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh return kErrorNotSupported; 1064a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh } 1074a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetVSyncState(bool enable); 1084a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual void SetIdleTimeoutMs(uint32_t active_ms) {} 1094a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetMixerResolution(uint32_t width, uint32_t height); 1104a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetMixerResolution(uint32_t *width, uint32_t *height); 1114a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetFrameBufferConfig(const DisplayConfigVariableInfo &variable_info); 1124a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetFrameBufferConfig(DisplayConfigVariableInfo *variable_info); 1134a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetDetailEnhancerData(const DisplayDetailEnhancerData &de_data); 1144a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError GetDisplayPort(DisplayPort *port); 1154a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual bool IsPrimaryDisplay(); 1164a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError SetCompositionState(LayerComposition composition_type, bool enable); 1174a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 1184a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh protected: 1194a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayError BuildLayerStackStats(LayerStack *layer_stack); 1204a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh virtual DisplayError ValidateGPUTargetParams(); 1214a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh void CommitLayerParams(LayerStack *layer_stack); 1224a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh void PostCommitLayerParams(LayerStack *layer_stack); 1234a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayError HandleHDR(LayerStack *layer_stack); 1244a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 1254a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh // DumpImpl method 1264a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh void AppendDump(char *buffer, uint32_t length); 1274a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 1284a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh const char *GetName(const LayerComposition &composition); 1294a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayError ReconfigureDisplay(); 1304a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh bool NeedsMixerReconfiguration(LayerStack *layer_stack, uint32_t *new_mixer_width, 1314a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh uint32_t *new_mixer_height); 1324a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayError ReconfigureMixer(uint32_t width, uint32_t height); 1334a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh bool NeedsDownScale(const LayerRect &src_rect, const LayerRect &dst_rect, bool needs_rotation); 1344a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayError InitializeColorModes(); 1354a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayError SetColorModeInternal(const std::string &color_mode); 1364a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayError GetValueOfModeAttribute(const AttrVal &attr, const std::string &type, 1374a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh std::string *value); 1384a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayError GetHdrColorMode(std::string *color_mode, bool *found_hdr); 1394a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh bool IsSupportColorModeAttribute(const std::string &color_mode); 1404a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 1414a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh recursive_mutex recursive_mutex_; 1424a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayType display_type_; 1434a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayEventHandler *event_handler_ = NULL; 1444a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh HWDeviceType hw_device_type_; 1454a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh HWInterface *hw_intf_ = NULL; 1464a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh HWPanelInfo hw_panel_info_; 1474a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh BufferSyncHandler *buffer_sync_handler_ = NULL; 1484a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh BufferAllocator *buffer_allocator_ {}; 1494a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh CompManager *comp_manager_ = NULL; 1504a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayState state_ = kStateOff; 1514a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh bool active_ = false; 1524a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh Handle hw_device_ = 0; 1534a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh Handle display_comp_ctx_ = 0; 1544a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh HWLayers hw_layers_; 1554a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh bool needs_validate_ = true; 1564a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh bool vsync_enable_ = false; 1574a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh uint32_t max_mixer_stages_ = 0; 1584a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh HWInfoInterface *hw_info_intf_ = NULL; 1594a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh ColorManagerProxy *color_mgr_ = NULL; // each display object owns its ColorManagerProxy 1604a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh bool partial_update_control_ = true; 1614a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh HWEventsInterface *hw_events_intf_ = NULL; 1624a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh bool disable_pu_one_frame_ = false; 1634a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh uint32_t num_color_modes_ = 0; 1644a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh std::vector<SDEDisplayMode> color_modes_; 1654a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh typedef std::map<std::string, SDEDisplayMode *> ColorModeMap; 1664a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh ColorModeMap color_mode_map_ = {}; 1674a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh typedef std::map<std::string, AttrVal> ColorModeAttrMap; 1684a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh ColorModeAttrMap color_mode_attr_map_ = {}; 1694a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh HWDisplayAttributes display_attributes_ = {}; 1704a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh HWMixerAttributes mixer_attributes_ = {}; 1714a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh DisplayConfigVariableInfo fb_config_ = {}; 1724a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh uint32_t req_mixer_width_ = 0; 1734a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh uint32_t req_mixer_height_ = 0; 1744a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh std::string current_color_mode_ = "hal_native"; 1754a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh bool hdr_playback_mode_ = false; 1764a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh int disable_hdr_lut_gen_ = 0; 1774a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh}; 1784a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 1794a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh} // namespace sdm 1804a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh 1814a1efd0680d2e9b61739e1eaeffd89174d6d2605Alain Vongsouvanh#endif // __DISPLAY_BASE_H__ 182