summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Stoza <stoza@google.com>2016-07-14 11:48:16 -0700
committerDan Stoza <stoza@google.com>2016-07-14 12:08:13 -0700
commite87229e26761e9adc3966fa52de25df3c2f77d13 (patch)
tree39c806aa101be4b9460d5ef56fab9ab98439d104
parent814421ec1d7df84f848f3458b4925f2d93677254 (diff)
downloadlibhardware-e87229e26761e9adc3966fa52de25df3c2f77d13.tar.gz
HWC2: Add SKIP_CLIENT_COLOR_TRANSFORM capability
Adds HWC2_CAPABILITY_SKIP_CLIENT_COLOR_TRANSFORM, which indicates that the client should never apply the color transform, even if all layers are being composed by the client. This allows the device to use its color management hardware in all cases to avoid any potential mismatches between client and device application of the transform. Bug: 29870302 Change-Id: I90234d91858206714e650eadb03227a4a180d975
-rw-r--r--include/hardware/hwcomposer2.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/hardware/hwcomposer2.h b/include/hardware/hwcomposer2.h
index f6a6ebaf..69736032 100644
--- a/include/hardware/hwcomposer2.h
+++ b/include/hardware/hwcomposer2.h
@@ -86,6 +86,12 @@ typedef enum {
* (such as position, size, etc.) need to be performed through the
* validate/present cycle. */
HWC2_CAPABILITY_SIDEBAND_STREAM = 1,
+
+ /* Specifies that the device will apply a color transform even when either
+ * the client or the device has chosen that all layers should be composed by
+ * the client. This will prevent the client from applying the color
+ * transform during its composition step. */
+ HWC2_CAPABILITY_SKIP_CLIENT_COLOR_TRANSFORM = 2,
} hwc2_capability_t;
/* Possible composition types for a given layer */
@@ -325,6 +331,8 @@ static inline const char* getCapabilityName(hwc2_capability_t capability) {
switch (capability) {
case HWC2_CAPABILITY_INVALID: return "Invalid";
case HWC2_CAPABILITY_SIDEBAND_STREAM: return "SidebandStream";
+ case HWC2_CAPABILITY_SKIP_CLIENT_COLOR_TRANSFORM:
+ return "SkipClientColorTransform";
default: return "Unknown";
}
}
@@ -540,6 +548,7 @@ TO_STRING(hwc2_callback_descriptor_t, Callback, getCallbackDescriptorName)
enum class Capability : int32_t {
Invalid = HWC2_CAPABILITY_INVALID,
SidebandStream = HWC2_CAPABILITY_SIDEBAND_STREAM,
+ SkipClientColorTransform = HWC2_CAPABILITY_SKIP_CLIENT_COLOR_TRANSFORM,
};
TO_STRING(hwc2_capability_t, Capability, getCapabilityName)
@@ -1468,6 +1477,10 @@ typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_COLOR_MODE)(
* the desired color transform, it should force all layers to client composition
* during validateDisplay.
*
+ * If HWC2_CAPABILITY_SKIP_CLIENT_COLOR_TRANSFORM is present, then the client
+ * will never apply the color transform during client composition, even if all
+ * layers are being composed by the client.
+ *
* The matrix provided is an affine color transformation of the following form:
*
* |r.r r.g r.b 0|