summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Stoza <stoza@google.com>2016-07-14 11:48:16 -0700
committergitbuildkicker <android-build@google.com>2016-07-15 09:39:43 -0700
commit7d3a0bb675b4112c59e7e30a9db6f9c6991c987f (patch)
tree39c806aa101be4b9460d5ef56fab9ab98439d104
parent330d69afa6011116096e67cbe79d77d93e74d3d5 (diff)
downloadlibhardware-7d3a0bb675b4112c59e7e30a9db6f9c6991c987f.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|