97 lines
4.4 KiB
C++
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
|