display: Add IDisplayConfig Stable AIDL implementation

This change adds the IDisplayConfig HAL implementation using AIDL
interfaces.

Change-Id: I5244d4d7764fd5128a2cb1021b73364d0179cece
CRs-Fixed: 2871306
This commit is contained in:
Rheygine Medel
2020-12-01 14:43:32 -08:00
parent 50df48c0e0
commit 4bd6cb01ef
39 changed files with 1724 additions and 0 deletions

20
aidl/config/Android.bp Normal file
View File

@@ -0,0 +1,20 @@
aidl_interface {
name: "vendor.qti.hardware.display.config",
vendor_available: true,
srcs: [
"vendor/qti/hardware/display/config/*.aidl",
],
stability: "vintf",
imports: [
"android.hardware.common",
],
backend: {
java: {
enabled: false,
},
cpp: {
enabled: false,
},
},
versions: ["1"],
}

26
aidl/config/NOTICE Normal file
View File

@@ -0,0 +1,26 @@
Copyright (c) 2021 The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of The Linux Foundation nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -0,0 +1 @@
85e19ab4932644825750604ee629a47aec7589fd

View File

@@ -0,0 +1,28 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@VintfStability
parcelable Attributes {
int vsyncPeriod;
int xRes;
int yRes;
float xDpi;
float yDpi;
vendor.qti.hardware.display.config.DisplayPortType panelType;
boolean isYuv;
}

View File

@@ -0,0 +1,29 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum DisplayPortType {
INVALID = 0,
DEFAULT = 1,
DSI = 2,
DTV = 3,
WRITEBACK = 4,
LVDS = 5,
EDP = 6,
DP = 7,
}

View File

@@ -0,0 +1,26 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum DisplayType {
INVALID = 0,
PRIMARY = 1,
EXTERNAL = 2,
VIRTUAL = 3,
BUILTIN2 = 4,
}

View File

@@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum DynRefreshRateOp {
INVALID = 0,
DISABLE_METADATA = 1,
ENABLE_METADATA = 2,
SET_BINDER = 3,
}

View File

@@ -0,0 +1,26 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum ExternalStatus {
INVALID = 0,
OFFLINE = 1,
ONLINE = 2,
PAUSE = 3,
RESUME = 4,
}

View File

@@ -0,0 +1,24 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@VintfStability
parcelable HDRCapsParams {
int[] supportedHdrTypes;
float maxAvgLuminance;
float minLuminance;
}

View File

@@ -0,0 +1,70 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@VintfStability
interface IDisplayConfig {
boolean isDisplayConnected(in vendor.qti.hardware.display.config.DisplayType dpy);
void setDisplayStatus(in vendor.qti.hardware.display.config.DisplayType dpy, in vendor.qti.hardware.display.config.ExternalStatus status);
void configureDynRefreshRate(in vendor.qti.hardware.display.config.DynRefreshRateOp op, in int refrestRate);
int getConfigCount(in vendor.qti.hardware.display.config.DisplayType dpy);
int getActiveConfig(in vendor.qti.hardware.display.config.DisplayType dpy);
void setActiveConfig(in vendor.qti.hardware.display.config.DisplayType dpy, in int config);
vendor.qti.hardware.display.config.Attributes getDisplayAttributes(in int configIndex, in vendor.qti.hardware.display.config.DisplayType dpy);
void setPanelBrightness(in int level);
int getPanelBrightness();
void minHdcpEncryptionLevelChanged(in vendor.qti.hardware.display.config.DisplayType dpy, in int minEncLevel);
void refreshScreen();
void controlPartialUpdate(in vendor.qti.hardware.display.config.DisplayType dpy, in boolean enable);
void toggleScreenUpdate(in boolean on);
void setIdleTimeout(in int value);
vendor.qti.hardware.display.config.HDRCapsParams getHDRCapabilities(in vendor.qti.hardware.display.config.DisplayType dpy);
void setCameraLaunchStatus(in int on);
boolean displayBWTransactionPending();
void setDisplayAnimating(in long displayId, in boolean animating);
void controlIdlePowerCollapse(in boolean enable, in boolean synchronous);
boolean getWriteBackCapabilities();
void setDisplayDppsAdROI(in int displayId, in int hStart, in int hEnd, in int vStart, in int vEnd, in int factorIn, in int factorOut);
void updateVSyncSourceOnPowerModeOff();
void updateVSyncSourceOnPowerModeDoze();
void setPowerMode(in int dispId, in vendor.qti.hardware.display.config.PowerMode powerMode);
boolean isPowerModeOverrideSupported(in int dispId);
boolean isHDRSupported(in int dispId);
boolean isWCGSupported(in int dispId);
void setLayerAsMask(in int dispId, in long layerId);
String getDebugProperty(in String propName);
vendor.qti.hardware.display.config.Attributes getActiveBuiltinDisplayAttributes();
void setPanelLuminanceAttributes(in int dispId, in float minLum, in float maxLum);
boolean isBuiltInDisplay(in int dispId);
boolean isAsyncVDSCreationSupported();
void createVirtualDisplay(in int width, in int height, in int format);
long[] getSupportedDSIBitClks(in int dispId);
long getDSIClk(in int dispId);
void setDSIClk(in int dispId, in long bitClk);
void setCWBOutputBuffer(in vendor.qti.hardware.display.config.IDisplayConfigCallback callback, in int dispId, in vendor.qti.hardware.display.config.Rect rect, in boolean postProcessed, in android.hardware.common.NativeHandle buffer);
void setQsyncMode(in int dispId, in vendor.qti.hardware.display.config.QsyncMode mode);
boolean isSmartPanelConfig(in int dispId, in int configId);
boolean isRotatorSupportedFormat(in int halFormat, in boolean ubwc);
void controlQsyncCallback(in boolean enable);
void sendTUIEvent(in vendor.qti.hardware.display.config.DisplayType dpy, in vendor.qti.hardware.display.config.TUIEventType eventType);
int getDisplayHwId(in int dispId);
int[] getSupportedDisplayRefreshRates(in vendor.qti.hardware.display.config.DisplayType dpy);
boolean isRCSupported(in int dispId);
void controlIdleStatusCallback(in boolean enable);
boolean isSupportedConfigSwitch(in int dispId, in int config);
vendor.qti.hardware.display.config.DisplayType getDisplayType(in long physicalDispId);
}

View File

@@ -0,0 +1,24 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@VintfStability
interface IDisplayConfigCallback {
oneway void notifyCWBBufferDone(in int error, in android.hardware.common.NativeHandle buffer);
oneway void notifyQsyncChange(in boolean qsyncEnabled, in int refreshRate, in int qsyncRefreshRate);
oneway void notifyIdleStatus(in boolean isIdle);
}

View File

@@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum PowerMode {
OFF = 0,
DOZE = 1,
ON = 2,
DOZE_SUSPEND = 3,
}

View File

@@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum QsyncMode {
NONE = 0,
WAIT_FOR_FENCES_ONE_FRAME = 1,
WAIT_FOR_FENCES_EACH_FRAME = 2,
WAIT_FOR_COMMIT_EACH_FRAME = 3,
}

View File

@@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@VintfStability
parcelable Rect {
int left;
int top;
int right;
int bottom;
}

View File

@@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum TUIEventType {
NONE = 0,
PREPARE_TUI_TRANSITION = 1,
START_TUI_TRANSITION = 2,
END_TUI_TRANSITION = 3,
}

View File

@@ -0,0 +1,28 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@VintfStability
parcelable Attributes {
int vsyncPeriod;
int xRes;
int yRes;
float xDpi;
float yDpi;
vendor.qti.hardware.display.config.DisplayPortType panelType;
boolean isYuv;
}

View File

@@ -0,0 +1,29 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum DisplayPortType {
INVALID = 0,
DEFAULT = 1,
DSI = 2,
DTV = 3,
WRITEBACK = 4,
LVDS = 5,
EDP = 6,
DP = 7,
}

View File

@@ -0,0 +1,26 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum DisplayType {
INVALID = 0,
PRIMARY = 1,
EXTERNAL = 2,
VIRTUAL = 3,
BUILTIN2 = 4,
}

View File

@@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum DynRefreshRateOp {
INVALID = 0,
DISABLE_METADATA = 1,
ENABLE_METADATA = 2,
SET_BINDER = 3,
}

View File

@@ -0,0 +1,26 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum ExternalStatus {
INVALID = 0,
OFFLINE = 1,
ONLINE = 2,
PAUSE = 3,
RESUME = 4,
}

View File

@@ -0,0 +1,24 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@VintfStability
parcelable HDRCapsParams {
int[] supportedHdrTypes;
float maxAvgLuminance;
float minLuminance;
}

View File

@@ -0,0 +1,70 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@VintfStability
interface IDisplayConfig {
boolean isDisplayConnected(in vendor.qti.hardware.display.config.DisplayType dpy);
void setDisplayStatus(in vendor.qti.hardware.display.config.DisplayType dpy, in vendor.qti.hardware.display.config.ExternalStatus status);
void configureDynRefreshRate(in vendor.qti.hardware.display.config.DynRefreshRateOp op, in int refrestRate);
int getConfigCount(in vendor.qti.hardware.display.config.DisplayType dpy);
int getActiveConfig(in vendor.qti.hardware.display.config.DisplayType dpy);
void setActiveConfig(in vendor.qti.hardware.display.config.DisplayType dpy, in int config);
vendor.qti.hardware.display.config.Attributes getDisplayAttributes(in int configIndex, in vendor.qti.hardware.display.config.DisplayType dpy);
void setPanelBrightness(in int level);
int getPanelBrightness();
void minHdcpEncryptionLevelChanged(in vendor.qti.hardware.display.config.DisplayType dpy, in int minEncLevel);
void refreshScreen();
void controlPartialUpdate(in vendor.qti.hardware.display.config.DisplayType dpy, in boolean enable);
void toggleScreenUpdate(in boolean on);
void setIdleTimeout(in int value);
vendor.qti.hardware.display.config.HDRCapsParams getHDRCapabilities(in vendor.qti.hardware.display.config.DisplayType dpy);
void setCameraLaunchStatus(in int on);
boolean displayBWTransactionPending();
void setDisplayAnimating(in long displayId, in boolean animating);
void controlIdlePowerCollapse(in boolean enable, in boolean synchronous);
boolean getWriteBackCapabilities();
void setDisplayDppsAdROI(in int displayId, in int hStart, in int hEnd, in int vStart, in int vEnd, in int factorIn, in int factorOut);
void updateVSyncSourceOnPowerModeOff();
void updateVSyncSourceOnPowerModeDoze();
void setPowerMode(in int dispId, in vendor.qti.hardware.display.config.PowerMode powerMode);
boolean isPowerModeOverrideSupported(in int dispId);
boolean isHDRSupported(in int dispId);
boolean isWCGSupported(in int dispId);
void setLayerAsMask(in int dispId, in long layerId);
String getDebugProperty(in String propName);
vendor.qti.hardware.display.config.Attributes getActiveBuiltinDisplayAttributes();
void setPanelLuminanceAttributes(in int dispId, in float minLum, in float maxLum);
boolean isBuiltInDisplay(in int dispId);
boolean isAsyncVDSCreationSupported();
void createVirtualDisplay(in int width, in int height, in int format);
long[] getSupportedDSIBitClks(in int dispId);
long getDSIClk(in int dispId);
void setDSIClk(in int dispId, in long bitClk);
void setCWBOutputBuffer(in vendor.qti.hardware.display.config.IDisplayConfigCallback callback, in int dispId, in vendor.qti.hardware.display.config.Rect rect, in boolean postProcessed, in android.hardware.common.NativeHandle buffer);
void setQsyncMode(in int dispId, in vendor.qti.hardware.display.config.QsyncMode mode);
boolean isSmartPanelConfig(in int dispId, in int configId);
boolean isRotatorSupportedFormat(in int halFormat, in boolean ubwc);
void controlQsyncCallback(in boolean enable);
void sendTUIEvent(in vendor.qti.hardware.display.config.DisplayType dpy, in vendor.qti.hardware.display.config.TUIEventType eventType);
int getDisplayHwId(in int dispId);
int[] getSupportedDisplayRefreshRates(in vendor.qti.hardware.display.config.DisplayType dpy);
boolean isRCSupported(in int dispId);
void controlIdleStatusCallback(in boolean enable);
boolean isSupportedConfigSwitch(in int dispId, in int config);
vendor.qti.hardware.display.config.DisplayType getDisplayType(in long physicalDispId);
}

View File

@@ -0,0 +1,24 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@VintfStability
interface IDisplayConfigCallback {
oneway void notifyCWBBufferDone(in int error, in android.hardware.common.NativeHandle buffer);
oneway void notifyQsyncChange(in boolean qsyncEnabled, in int refreshRate, in int qsyncRefreshRate);
oneway void notifyIdleStatus(in boolean isIdle);
}

View File

@@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum PowerMode {
OFF = 0,
DOZE = 1,
ON = 2,
DOZE_SUSPEND = 3,
}

View File

@@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum QsyncMode {
NONE = 0,
WAIT_FOR_FENCES_ONE_FRAME = 1,
WAIT_FOR_FENCES_EACH_FRAME = 2,
WAIT_FOR_COMMIT_EACH_FRAME = 3,
}

View File

@@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@VintfStability
parcelable Rect {
int left;
int top;
int right;
int bottom;
}

View File

@@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package vendor.qti.hardware.display.config;
@Backing(type="int") @VintfStability
enum TUIEventType {
NONE = 0,
PREPARE_TUI_TRANSITION = 1,
START_TUI_TRANSITION = 2,
END_TUI_TRANSITION = 3,
}

View File

@@ -0,0 +1,43 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
import vendor.qti.hardware.display.config.DisplayPortType;
@VintfStability
parcelable Attributes {
int vsyncPeriod;
int xRes;
int yRes;
float xDpi;
float yDpi;
DisplayPortType panelType;
boolean isYuv;
}

View File

@@ -0,0 +1,43 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
@VintfStability
@Backing(type="int")
enum DisplayPortType {
INVALID = 0,
DEFAULT = 1,
DSI = 2,
DTV = 3,
WRITEBACK = 4,
LVDS = 5,
EDP = 6,
DP = 7
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
@VintfStability
@Backing(type="int")
enum DisplayType {
INVALID = 0,
PRIMARY = 1,
EXTERNAL = 2,
VIRTUAL = 3,
BUILTIN2 = 4,
}

View File

@@ -0,0 +1,38 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
@VintfStability
@Backing(type="int")
enum DynRefreshRateOp {
INVALID = 0,
DISABLE_METADATA = 1,
ENABLE_METADATA = 2,
SET_BINDER = 3,
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
@VintfStability
@Backing(type="int")
enum ExternalStatus {
INVALID = 0,
OFFLINE = 1,
ONLINE = 2,
PAUSE = 3,
RESUME = 4,
}

View File

@@ -0,0 +1,37 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
@VintfStability
parcelable HDRCapsParams {
int[] supportedHdrTypes;
float maxAvgLuminance;
float minLuminance;
}

View File

@@ -0,0 +1,517 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
import android.hardware.common.NativeHandle;
import vendor.qti.hardware.display.config.Attributes;
import vendor.qti.hardware.display.config.DisplayType;
import vendor.qti.hardware.display.config.DynRefreshRateOp;
import vendor.qti.hardware.display.config.ExternalStatus;
import vendor.qti.hardware.display.config.HDRCapsParams;
import vendor.qti.hardware.display.config.IDisplayConfigCallback;
import vendor.qti.hardware.display.config.PowerMode;
import vendor.qti.hardware.display.config.QsyncMode;
import vendor.qti.hardware.display.config.Rect;
import vendor.qti.hardware.display.config.TUIEventType;
@VintfStability
interface IDisplayConfig {
/*
* Query whether a given display type is connected.
*
* @param dpy display type
*
* @return true when connected, false when disconnected
*/
boolean isDisplayConnected(in DisplayType dpy);
/*
* Set the secondary display status (pause/resume/offline) etc.
*
* @param dpy display type
* @param status next status to be set
*
* @return error is NONE upon success
*/
void setDisplayStatus(in DisplayType dpy, in ExternalStatus status);
/*
* Enable/Disable/Set refresh rate dynamically.
*
* @param op operation code defined in DisplayDynRefreshRateOp
* @param refreshRate refresh rate value
*
* @return error is NONE upon success
*/
void configureDynRefreshRate(in DynRefreshRateOp op, in int refrestRate);
/*
* Query the number of configurations a given display can support.
*
* @param dpy display type
*
* @return number of configurations
*/
int getConfigCount(in DisplayType dpy);
/*
* Query the config index of a given display type.
*
* @param[in] dpy display type
*
* @return config index of the display type
*/
int getActiveConfig(in DisplayType dpy);
/*
* Set a new display configuration pointed by the index.
*
* @param dpy display type
* @param config config index
*
* @return error is NONE upon success
*/
void setActiveConfig(in DisplayType dpy, in int config);
/*
* Query the display attributes of the specified config index.
*
* @param configIndex config index
* @param dpy display type
*
* @return attributes display attributes
*/
Attributes getDisplayAttributes(in int configIndex, in DisplayType dpy);
/*
* Set the panel brightness of the primary display.
*
* @param level brightness level
*
* @return error is NONE upon success
*/
void setPanelBrightness(in int level);
/*
* Query the panel brightness of the primary display.
*
* @return level brightness level
*/
int getPanelBrightness();
/*
* Indicates display about a change in minimum encryption level.
*
* @param dpy display type
* @param minEncLevel encryption level
*
* @return error is NONE upon success
*/
void minHdcpEncryptionLevelChanged (in DisplayType dpy, in int minEncLevel);
/*
* Requests display to recompose and invalidate the display pipeline.
*
* @return error is NONE upon success
*/
void refreshScreen();
/*
* Enable/Disable partial update.
*
* @param dpy display type
* @param enable enable/disable
*
* @return error is NONE upon success
*/
void controlPartialUpdate(in DisplayType dpy, in boolean enable);
/*
* Toggle screen update.
*
* @param on if true, pause display and drop incoming draw cycles
*
* @return error is NONE upon success
*/
void toggleScreenUpdate(in boolean on);
/*
* Set idle timeout value for video mode panels.
*
* @param value idle timeout value
*
* @return error is NONE upon success
*/
void setIdleTimeout(in int value);
/*
* Query the HDR capabilities of a given display type.
*
* @param dpy display type.
*
* @return HDR capabilities
*/
HDRCapsParams getHDRCapabilities(in DisplayType dpy);
/*
* Set the camera application's status (start/stop).
*
* @param on if true, camera is started
*
* @return error is NONE upon success
*/
void setCameraLaunchStatus(in int on);
/*
* Query the bandwidth transaction status.
*
* @return true if transaction is still pending
*/
boolean displayBWTransactionPending();
/*
* Set display animating property.
*
* @param displayId display Id
* @param animating if true, the display is animating
*
* @return error is NONE upon success
*/
void setDisplayAnimating(in long displayId, in boolean animating);
/*
* Enable/disable idle power collapse.
*
* @param enable enable/disable
* @param synchronous commit
*
* @return error is NONE upon success
*/
void controlIdlePowerCollapse(in boolean enable, in boolean synchronous);
/*
* Query whether UBWC writeback is supported.
*
* @return true if supported, false if not supported
*/
boolean getWriteBackCapabilities();
/*
* Set the region of interest of display dpps ad4
*
* @param display_id ID of this display
* @param hStart start in hotizontal direction
* @param hEnd end in hotizontal direction
* @param vStart start in vertical direction
* @param vEnd end in vertical direction
* @param factorIn the strength factor of inside ROI region
* @param factorOut the strength factor of outside ROI region
*
* @return error is NONE upon success
*/
void setDisplayDppsAdROI(in int displayId, in int hStart, in int hEnd, in int vStart,
in int vEnd, in int factorIn, in int factorOut);
/*
* Update vsync source to next active display upon the power state
* change to off.
*
* @return error is NONE upon success
*/
void updateVSyncSourceOnPowerModeOff();
/*
* Update vsync source to next active display upon the power state
* change to doze.
*
* @return error is NONE upon success
*/
void updateVSyncSourceOnPowerModeDoze();
/*
* Sets new power mode on the specificied display.
*
* @param dispId display identifier used between client & service
* @param powerMode new power mode
*
* @return error is NONE upon success
*/
void setPowerMode(in int dispId, in PowerMode powerMode);
/*
* Query if power mode override is supported by underlying implementation
* for the specified display.
*
* @param dispId display identifier used between client & service
*
* @return true if supported, false if not supported
*/
boolean isPowerModeOverrideSupported(in int dispId);
/*
* Query if hdr is supported by the underlying implementation for the specified display.
*
* @param dispId display identifier used between client & service
*
* @return true if supported, false if not supported
*/
boolean isHDRSupported(in int dispId);
/*
* Query if wide color gamut is supported by the underlying implementation
* for the specified display.
*
* @param dispId display identifier used between client & service
*
* @return true if supported, false if not supported
*/
boolean isWCGSupported(in int dispId);
/*
* Set layer as a mask type (e.g. round corner) identified by the layer id.
*
* @param dispId display identifier used between client & service
* @param layerId layer id used for communication with hwc
*
* @return error is NONE upon success
*/
void setLayerAsMask(in int dispId, in long layerId);
/*
* Query the value corresponding to the specified property string from hwc.
*
* @param propName name of the property
*
* @return value corresponding to the property
*/
String getDebugProperty(in String propName);
/*
* Query the attributes for the active builtin display. If all
* builtin displays are active, it returns primary display attributes.
*
* @return active display attributes
*/
Attributes getActiveBuiltinDisplayAttributes();
/*
* Set the min and max luminance attributes required for dynamic
* tonemapping of external device.
*
* @param dispId display identifier used between client & service
* @param minLum min luminance supported by external device
* @param maxLum max luminance supported by external device
*
* @return error is NONE upon success
*/
void setPanelLuminanceAttributes(in int dispId, in float minLum, in float maxLum);
/*
* Query if the underlying display is of Built-In Type.
*
* @param dispId display identifier used between client & service
*
* @return true if display is of Built-In type
*/
boolean isBuiltInDisplay(in int dispId);
/*
* Query if asynchronous Virtual Display Creation is supported
*
* @return true if async Virtual display creation is supported
*/
boolean isAsyncVDSCreationSupported();
/*
* Creates Virtual Display based on width, height, format parameters.
*
* @param width Width of the virtual display
* @param height Height of the virtual display
* @param format Pixel format of the virtual display
*
* @return error is NONE upon success
*/
void createVirtualDisplay(in int width, in int height, in int format);
/*
* Query the supported bit clock values of a given display ID.
*
* @param dispId display id
*
* @return vector of bit clock values
*/
long[] getSupportedDSIBitClks(in int dispId);
/*
* Query the current bit clock value of a given display ID.
*
* @param dispId display id.
*
* @return bit clock value
*/
long getDSIClk(in int dispId);
/*
* Set the bit clock value of a given display ID.
*
* @param dispId display id
* @param bitClk desired bit clock value
*
* @return error is NONE upon success
*/
void setDSIClk(in int dispId, in long bitClk);
/*
* Set the output buffer to be filled with the contents of the next
* composition performed for this display. Client can specify cropping
* rectangle for the partial concurrent writeback.
* Buffer must be ready for writeback before this API is called.
* If hardware protected content is displayed in next composition cycle,
* CWB output buffer will be returned as failure in callback and without
* any change in buffer.
*
* @param dispId display id where concurrent writeback shall be captured
* @param rect cropping rectangle which shall be applied on blended output
* @param postProcessed whether to capture post processed or mixer output
* @param buffer buffer where concurrent writeback output shall be written
*
* @return error is NONE upon success
*/
void setCWBOutputBuffer(in IDisplayConfigCallback callback, in int dispId, in Rect rect,
in boolean postProcessed, in NativeHandle buffer);
/*
* Set the desired qsync mode which will ideally take effect from next
* composition cycle. Mode change may take longer than one cycle if there
* is a conflict with current operation mode.
*
* @param dispId display id
* @param mode desired qsync mode
*
* @return error is NONE upon success
*/
void setQsyncMode(in int dispId, in QsyncMode mode);
/*
* Query if the specified display config has smart panel.
*
* @param dispId display Id
* @param configId display config index
*
* @return true if the DisplayConfig has Smart Panel
*/
boolean isSmartPanelConfig(in int dispId, in int configId);
/*
* Query if the given format is supported by rotator.
*
* @param format pass HAL_PIXEL_FORMAT for the validation
* @param ubwc true if the given format is ubwc format otherwise false
*
* @return true if supported or false
*/
boolean isRotatorSupportedFormat(in int halFormat, in boolean ubwc);
/*
* Enable/Display qsync callback.
*
* @param enable true if enabling qsync callback
*
* @return error is NONE upon success
*/
void controlQsyncCallback(in boolean enable);
/*
* Notify TUI transition events to HW Composer.
*
* @param dpy display type
* @param eventType TUI Event Type
*
* @return error is NONE upon success
*/
void sendTUIEvent(in DisplayType dpy, in TUIEventType eventType);
/*
* Query the display HW Id of a given display from HWC HAL
*
* @param dispId display Id
*
* @return display HW ID
*/
int getDisplayHwId(in int dispId);
/*
* Query the supported refresh rates from Display HAL. The API would return a vector of
* supported fps in the current config group.
*
* @param dpy display type
*
* @return supported refresh rates
*/
int[] getSupportedDisplayRefreshRates(in DisplayType dpy);
/*
* Query if the rounded corner feature is supported.
*
* @param dispId display Id
*
* @return true if supported, false otherwise
*/
boolean isRCSupported(in int dispId);
/*
* Control the idle status callback.
*
* @param enable true if idle callback is enabled
*
* @return error is NONE upon success
*/
void controlIdleStatusCallback(in boolean enable);
/*
* Query if the config switch is supported on the display.
*
* @param dispId display ID
* @param config config bit mask
*
* @return true if supported, false otherwise
*/
boolean isSupportedConfigSwitch(in int dispId, in int config);
/*
* Query the display type information for a given physical display id.
*
* @param physicalDispId physical display ID
*
* @return display type
*/
DisplayType getDisplayType(in long physicalDispId);
}

View File

@@ -0,0 +1,60 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
import android.hardware.common.NativeHandle;
@VintfStability
interface IDisplayConfigCallback {
/*
* Send notification when concurrent writeback process completes.
*
* @param error result of the CWB process
* @param buffer buffer for concurrent writeback
*/
oneway void notifyCWBBufferDone(in int error, in NativeHandle buffer);
/*
* Send notification when there are changes on the Qsync.
*
* @param qsyncEnabled Qsync status
* @param refreshRate refresh rate
* @param qsyncRefreshRate Qsync refresh rate
*/
oneway void notifyQsyncChange(in boolean qsyncEnabled, in int refreshRate,
in int qsyncRefreshRate);
/*
* Send notification whether the device is in idle state.
*
* @param isIdle idle status
*/
oneway void notifyIdleStatus(in boolean isIdle);
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
@VintfStability
@Backing(type="int")
enum PowerMode {
OFF = 0,
DOZE = 1,
ON = 2,
DOZE_SUSPEND = 3,
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
@VintfStability
@Backing(type="int")
enum QsyncMode {
NONE = 0,
WAIT_FOR_FENCES_ONE_FRAME = 1,
WAIT_FOR_FENCES_EACH_FRAME = 2,
WAIT_FOR_COMMIT_EACH_FRAME = 3,
}

View File

@@ -0,0 +1,38 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
@VintfStability
parcelable Rect {
int left;
int top;
int right;
int bottom;
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.config;
@VintfStability
@Backing(type="int")
enum TUIEventType {
NONE = 0,
PREPARE_TUI_TRANSITION = 1,
START_TUI_TRANSITION = 2,
END_TUI_TRANSITION = 3,
}