Add ALLM and Content types in hwc2

Bug:132731049

Test: make -j$(nproc)

Change-Id: I563f7d85f3bf92fc5a0710e45f06828cb1daa8b5
This commit is contained in:
Galia Peycheva 2019-11-06 22:59:52 +01:00
parent b1ea403d92
commit f77ae43612

View file

@ -302,6 +302,9 @@ typedef enum {
HWC2_FUNCTION_GET_DISPLAY_CONNECTION_TYPE,
HWC2_FUNCTION_GET_DISPLAY_VSYNC_PERIOD,
HWC2_FUNCTION_SET_ACTIVE_CONFIG_WITH_CONSTRAINTS,
HWC2_FUNCTION_SET_AUTO_LOW_LATENCY_MODE,
HWC2_FUNCTION_GET_SUPPORTED_CONTENT_TYPES,
HWC2_FUNCTION_SET_CONTENT_TYPE,
} hwc2_function_descriptor_t;
/* Layer requests returned from getDisplayRequests */
@ -340,6 +343,14 @@ typedef enum {
HWC2_POWER_MODE_ON = 2,
} hwc2_power_mode_t;
typedef enum {
HWC2_CONTENT_TYPE_NONE = 0,
HWC2_CONTENT_TYPE_GRAPHICS = 1,
HWC2_CONTENT_TYPE_PHOTO = 2,
HWC2_CONTENT_TYPE_CINEMA = 3,
HWC2_CONTENT_TYPE_GAME = 4,
} hwc2_content_type_t;
/* Vsync values passed to setVsyncEnabled */
typedef enum {
HWC2_VSYNC_INVALID = 0,
@ -432,6 +443,15 @@ typedef enum {
* Specified that the display supports brightness operations.
*/
HWC2_DISPLAY_CAPABILITY_BRIGHTNESS = 3,
/**
* Specifies that the display supports a low latency mode. If the connection
* to the display is via HDMI, this specifies whether Auto Low Latency Mode
* is supported. If, instead, there is an internal connection to the display,
* then this specifies that the display has some other custom low latency
* mode.
*/
HWC2_DISPLAY_CAPABILITY_AUTO_LOW_LATENCY_MODE = 5,
} hwc2_display_capability_t;
/*
@ -640,6 +660,9 @@ static inline const char* getFunctionDescriptorName(
case HWC2_FUNCTION_GET_DISPLAY_CONNECTION_TYPE: return "GetDisplayConnectionType";
case HWC2_FUNCTION_GET_DISPLAY_VSYNC_PERIOD: return "GetDisplayVsyncPeriod";
case HWC2_FUNCTION_SET_ACTIVE_CONFIG_WITH_CONSTRAINTS: return "SetActiveConfigWithConstraints";
case HWC2_FUNCTION_SET_AUTO_LOW_LATENCY_MODE: return "SetAutoLowLatencyMode";
case HWC2_FUNCTION_GET_SUPPORTED_CONTENT_TYPES: return "GetSupportedContentTypes";
case HWC2_FUNCTION_SET_CONTENT_TYPE: return "SetContentType";
default: return "Unknown";
}
@ -663,6 +686,17 @@ static inline const char* getPowerModeName(hwc2_power_mode_t mode) {
}
}
static inline const char* getContentTypeName(hwc2_content_type_t contentType) {
switch(contentType) {
case HWC2_CONTENT_TYPE_NONE: return "None";
case HWC2_CONTENT_TYPE_GRAPHICS: return "Graphics";
case HWC2_CONTENT_TYPE_PHOTO: return "Photo";
case HWC2_CONTENT_TYPE_CINEMA: return "Cinema";
case HWC2_CONTENT_TYPE_GAME: return "Game";
default: return "Unknown";
}
}
static inline const char* getTransformName(hwc_transform_t transform) {
switch (__BIONIC_CAST(static_cast, int, transform)) {
case 0: return "None";
@ -715,6 +749,8 @@ static inline const char* getDisplayCapabilityName(hwc2_display_capability_t cap
return "Doze";
case HWC2_DISPLAY_CAPABILITY_BRIGHTNESS:
return "Brightness";
case HWC2_DISPLAY_CAPABILITY_AUTO_LOW_LATENCY_MODE:
return "AutoLowLatencyMode";
default:
return "Unknown";
}
@ -900,7 +936,9 @@ enum class FunctionDescriptor : int32_t {
GetDisplayConnectionType = HWC2_FUNCTION_GET_DISPLAY_CONNECTION_TYPE,
GetDisplayVsyncPeriod = HWC2_FUNCTION_GET_DISPLAY_VSYNC_PERIOD,
SetActiveConfigWithConstraints = HWC2_FUNCTION_SET_ACTIVE_CONFIG_WITH_CONSTRAINTS,
SetAutoLowLatencyMode = HWC2_FUNCTION_SET_AUTO_LOW_LATENCY_MODE,
GetSupportedContentTypes = HWC2_FUNCTION_GET_SUPPORTED_CONTENT_TYPES,
SetContentType = HWC2_FUNCTION_SET_CONTENT_TYPE,
};
TO_STRING(hwc2_function_descriptor_t, FunctionDescriptor,
getFunctionDescriptorName)
@ -918,6 +956,15 @@ enum class PowerMode : int32_t {
};
TO_STRING(hwc2_power_mode_t, PowerMode, getPowerModeName)
enum class ContentType : int32_t {
None = HWC2_CONTENT_TYPE_NONE,
Graphics = HWC2_CONTENT_TYPE_GRAPHICS,
Photo = HWC2_CONTENT_TYPE_PHOTO,
Cinema = HWC2_CONTENT_TYPE_CINEMA,
Game = HWC2_CONTENT_TYPE_GAME,
};
TO_STRING(hwc2_content_type_t, ContentType, getContentTypeName)
enum class Transform : int32_t {
None = 0,
FlipH = HWC_TRANSFORM_FLIP_H,
@ -942,6 +989,7 @@ enum class DisplayCapability : int32_t {
SkipClientColorTransform = HWC2_DISPLAY_CAPABILITY_SKIP_CLIENT_COLOR_TRANSFORM,
Doze = HWC2_DISPLAY_CAPABILITY_DOZE,
Brightness = HWC2_DISPLAY_CAPABILITY_BRIGHTNESS,
AutoLowLatencyMode = HWC2_DISPLAY_CAPABILITY_AUTO_LOW_LATENCY_MODE,
};
TO_STRING(hwc2_display_capability_t, DisplayCapability, getDisplayCapabilityName)
@ -2903,6 +2951,68 @@ typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_ACTIVE_CONFIG_WITH_CONSTRAINTS)(
hwc_vsync_period_change_constraints_t* vsyncPeriodChangeConstraints,
hwc_vsync_period_change_timeline_t* outTimeline);
/* setAutoLowLatencyMode(displayToken, on)
* Descriptor: HWC2_FUNCTION_SET_AUTO_LOW_LATENCY_MODE
* Required for HWC2 devices for composer 2.4, connected to a display via HDMI 2.1
* Optional for internally connected devices and HDMI <2.1 display connections
*
* setAutoLowLatencyMode requests that the display goes into low latency mode. If the display
* is connected via HDMI 2.1, then Auto Low Latency Mode should be triggered. If the display is
* internally connected, then a custom low latency mode should be triggered (if available).
*
* Parameters:
* on - indicates whether to turn low latency mode on (=true) or off (=false)
*
* Returns HWC2_ERROR_NONE or one of the following errors:
* HWC2_ERROR_BAD_DISPLAY - when the display is invalid, or
* HWC2_ERROR_UNSUPPORTED - when the display does not support any low latency mode
*/
typedef int32_t /*hwc_error_t*/ (*HWC2_PFN_SET_AUTO_LOW_LATENCY_MODE)(hwc2_device_t* device,
hwc2_display_t display, bool on);
/* getSupportedContentTypes(..., outSupportedContentTypes)
* Descriptor: HWC2_FUNCTION_GET_SUPPORTED_CONTENT_TYPES
* Required for HWC2 devices for composer 2.4
*
* getSupportedContentTypes returns a list of supported content types
* (as described in the definition of ContentType above).
* This list must not change after initialization.
*
* Parameters:
* outNumSupportedContentTypes - if outSupportedContentTypes was nullptr, returns the number
* of supported content types; if outSupportedContentTypes was not nullptr, returns the
* number of capabilities stored in outSupportedContentTypes, which must not exceed the
* value stored in outNumSupportedContentTypes prior to the call; pointer will be non-NULL
* outSupportedContentTypes - a list of supported content types.
*
* Returns HWC2_ERROR_NONE or one of the following errors:
* HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
*/
typedef int32_t /*hwc_error_t*/ (*HWC2_PFN_GET_SUPPORTED_CONTENT_TYPES)(hwc2_device_t* device,
hwc2_display_t display, uint32_t* outNumSupportedContentTypes, uint32_t* outSupportedContentTypes);
/* setContentType(displayToken, contentType)
* Descriptor: HWC2_FUNCTION_SET_CONTENT_TYPE
* Required for HWC2 devices for composer 2.4
* Optional for HWC2 devices for composer 2.1, 2.2, 2.3
*
* setContentType instructs the display that the content being shown is of the given contentType
* (one of GRAPHICS, PHOTO, CINEMA, GAME).
*
* According to the HDMI 1.4 specification, supporting all content types is optional. Whether
* the display supports a given content type is reported by getSupportedContentTypes.
*
* Parameters:
* contentType - the type of content that is currently being shown on the display
*
* Returns HWC2_ERROR_NONE or one of the following errors:
* HWC2_ERROR_BAD_DISPLAY - when the display is invalid, or
* HWC2_ERROR_UNSUPPORTED - when the given content type is a valid content type, but is not
* supported on this display, or
* HWC2_ERROR_BAD_PARAMETER - when the given content type is invalid
*/
typedef int32_t /*hwc_error_t*/ (*HWC2_PFN_SET_CONTENT_TYPE)(hwc2_device_t* device,
hwc2_display_t display, int32_t /* hwc2_content_type_t */ contentType);
__END_DECLS