unplugged-system/frameworks/native/services/surfaceflinger/mediatek/MtkVDS.h

97 lines
4.4 KiB
C++

/* Copyright Statement:
*
* This software/firmware and related documentation ("MediaTek Software") are
* protected under relevant copyright laws. The information contained herein is
* confidential and proprietary to MediaTek Inc. and/or its licensors. Without
* the prior written permission of MediaTek inc. and/or its licensors, any
* reproduction, modification, use or disclosure of MediaTek Software, and
* information contained herein, in whole or in part, shall be strictly
* prohibited.
*
* MediaTek Inc. (C) 2022. All rights reserved.
*
* BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
* ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
* WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
* RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
* INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES
* TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
* RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
* OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
* SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
* RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
* STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
* ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE
* RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE
* MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
* CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* The following software/firmware and/or related documentation ("MediaTek
* Software") have been modified by MediaTek Inc. All revisions are subject to
* any receiver's applicable license agreements with MediaTek Inc.
*/
#pragma once
#include <log/log.h>
// This name will send form WifiDisplayAdapter.java
// function name "addDisplayDeviceLocked" to create WFD
#define WIFI_DISPLAY_PATTERN "isWifiDpyForHWC"
namespace android {
// ---------------------------------------------------------------------------
class MtkVDS
{
public:
// Save the default value of mUseHwcVirtualDisplays to mDefaultUseHWCToComposeVirtualDisplay
// ,and use it to decide SF default use OVL or GPU to compose virtual display. 0: GPU 1: HWC
bool mDefaultUseHWCToComposeVirtualDisplay;
// Record SF service call 1021 had been called or not.
//
// In AOSP logic,if onTransact 1021 had been called, we use mUseHwcVirtualDisplays to
// decide using OVL or GPU to compose virtual display.
// But it has a special case. If user called onTransact 1021 with 1021 value, we will clear
// this variable and revert back to the setting before calling 1021.
bool mForceWhichHWToComposeVirtualDisplay;
// This varible use to enable Wifi display checking mechanism.
// If mOvlOnlyForWifiDisplay = 1, it will check Wifi display when
// mDefaultUseHWCToComposeVirtualDisplay =0.
bool mOvlOnlyForWifiDisplay;
static MtkVDS& getInstance() {
static MtkVDS gInstance;
return gInstance;
}
~MtkVDS() {};
// Specific kind of display,ex: Wifi display
bool specificKindDisplay(const std::string& dpyName) const {
if (mOvlOnlyForWifiDisplay == false) {
return false;
}
// For Wifi display
if (std::string::npos != dpyName.find(WIFI_DISPLAY_PATTERN)) {
ALOGI("%s dpyName:%s is WIFI display", __func__, dpyName.c_str());
return true;
} else {
ALOGI("%s dpyName:%s is not WIFI display", __func__, dpyName.c_str());
}
return false;
}
private:
MtkVDS() {
mDefaultUseHWCToComposeVirtualDisplay = false;
mForceWhichHWToComposeVirtualDisplay = false;
mOvlOnlyForWifiDisplay = false;
}
};
// ---------------------------------------------------------------------------
}; // namespace android