summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarissa Wall <marissaw@google.com>2016-12-01 10:55:19 -0800
committerMarissa Wall <marissaw@google.com>2017-03-02 12:35:06 -0800
commit4e1146b84cea045c298d098c2a90770c03e70479 (patch)
tree22b9f63fd32539ae1488a3b21fa3b402dbe41a52
parent8f8a6012122a895d539edc436db0a4f394fbc405 (diff)
downloadflounder-4e1146b84cea045c298d098c2a90770c03e70479.tar.gz
hwc2: set layer dataspace
Test: Add "TARGET_USES_HWC2 := true" to BoardConfig.mk. Recompile. Run testcases: https://android-review.googlesource.com/#/q/project: platform/frameworks/native+branch:master+topic:test-hwc2 Change-Id: If5312312979e249ff36c28e06a2d6f4d4d4865f8
-rw-r--r--hwc2/hwc2.cpp8
-rw-r--r--hwc2/hwc2.h10
-rw-r--r--hwc2/hwc2_buffer.cpp10
-rw-r--r--hwc2/hwc2_dev.cpp6
-rw-r--r--hwc2/hwc2_display.cpp12
-rw-r--r--hwc2/hwc2_layer.cpp5
6 files changed, 46 insertions, 5 deletions
diff --git a/hwc2/hwc2.cpp b/hwc2/hwc2.cpp
index ede7200..016b636 100644
--- a/hwc2/hwc2.cpp
+++ b/hwc2/hwc2.cpp
@@ -286,11 +286,11 @@ hwc2_error_t set_layer_composition_type(hwc2_device_t *device,
return dev->set_layer_composition_type(display, layer, type);
}
-hwc2_error_t set_layer_dataspace(hwc2_device_t* /*device*/,
- hwc2_display_t /*display*/, hwc2_layer_t /*layer*/,
- android_dataspace_t /*dataspace*/)
+hwc2_error_t set_layer_dataspace(hwc2_device_t *device, hwc2_display_t display,
+ hwc2_layer_t layer, android_dataspace_t dataspace)
{
- return HWC2_ERROR_NONE;
+ hwc2_dev *dev = reinterpret_cast<hwc2_context *>(device)->hwc2_dev;
+ return dev->set_layer_dataspace(display, layer, dataspace);
}
hwc2_error_t set_layer_display_frame(hwc2_device_t* /*device*/,
diff --git a/hwc2/hwc2.h b/hwc2/hwc2.h
index 70bd51a..1d44809 100644
--- a/hwc2/hwc2.h
+++ b/hwc2/hwc2.h
@@ -32,9 +32,14 @@ public:
hwc2_buffer();
/* Set properties */
+ hwc2_error_t set_dataspace(android_dataspace_t dataspace);
hwc2_error_t set_blend_mode(hwc2_blend_mode_t blend_mode);
private:
+ /* Provides more info on how to interpret the buffer contents such as
+ * the encoding standard and color transformation */
+ android_dataspace_t dataspace;
+
/* The blend mode of the buffer */
hwc2_blend_mode_t blend_mode;
};
@@ -98,6 +103,7 @@ public:
/* Set properties */
hwc2_error_t set_comp_type(hwc2_composition_t comp_type);
+ hwc2_error_t set_dataspace(android_dataspace_t dataspace);
hwc2_error_t set_blend_mode(hwc2_blend_mode_t blend_mode);
static hwc2_layer_t get_next_id();
@@ -155,6 +161,8 @@ public:
hwc2_error_t set_layer_composition_type(hwc2_layer_t lyr_id,
hwc2_composition_t comp_type);
+ hwc2_error_t set_layer_dataspace(hwc2_layer_t lyr_id,
+ android_dataspace_t dataspace);
hwc2_error_t set_layer_blend_mode(hwc2_layer_t lyr_id,
hwc2_blend_mode_t blend_mode);
@@ -233,6 +241,8 @@ public:
hwc2_error_t set_layer_composition_type(hwc2_display_t dpy_id,
hwc2_layer_t lyr_id, hwc2_composition_t comp_type);
+ hwc2_error_t set_layer_dataspace(hwc2_display_t dpy_id, hwc2_layer_t lyr_id,
+ android_dataspace_t dataspace);
hwc2_error_t set_layer_blend_mode(hwc2_display_t dpy_id,
hwc2_layer_t lyr_id, hwc2_blend_mode_t blend_mode);
diff --git a/hwc2/hwc2_buffer.cpp b/hwc2/hwc2_buffer.cpp
index 3f244e6..a2952e7 100644
--- a/hwc2/hwc2_buffer.cpp
+++ b/hwc2/hwc2_buffer.cpp
@@ -19,7 +19,15 @@
#include "hwc2.h"
hwc2_buffer::hwc2_buffer()
- : blend_mode(HWC2_BLEND_MODE_NONE) { }
+ : dataspace(),
+ blend_mode(HWC2_BLEND_MODE_NONE) { }
+
+hwc2_error_t hwc2_buffer::set_dataspace(android_dataspace_t dataspace)
+{
+ this->dataspace = dataspace;
+
+ return HWC2_ERROR_NONE;
+}
hwc2_error_t hwc2_buffer::set_blend_mode(hwc2_blend_mode_t blend_mode)
{
diff --git a/hwc2/hwc2_dev.cpp b/hwc2/hwc2_dev.cpp
index e0219f9..46ca61b 100644
--- a/hwc2/hwc2_dev.cpp
+++ b/hwc2/hwc2_dev.cpp
@@ -187,6 +187,12 @@ hwc2_error_t hwc2_dev::set_layer_composition_type(hwc2_display_t dpy_id,
comp_type);
}
+hwc2_error_t hwc2_dev::set_layer_dataspace(hwc2_display_t dpy_id,
+ hwc2_layer_t lyr_id, android_dataspace_t dataspace)
+{
+ return displays.find(dpy_id)->second.set_layer_dataspace(lyr_id, dataspace);
+}
+
hwc2_error_t hwc2_dev::set_layer_blend_mode(hwc2_display_t dpy_id,
hwc2_layer_t lyr_id, hwc2_blend_mode_t blend_mode)
{
diff --git a/hwc2/hwc2_display.cpp b/hwc2/hwc2_display.cpp
index 1d540fb..9f43fa4 100644
--- a/hwc2/hwc2_display.cpp
+++ b/hwc2/hwc2_display.cpp
@@ -276,6 +276,18 @@ hwc2_error_t hwc2_display::set_layer_composition_type(hwc2_layer_t lyr_id,
return it->second.set_comp_type(comp_type);
}
+hwc2_error_t hwc2_display::set_layer_dataspace(hwc2_layer_t lyr_id,
+ android_dataspace_t dataspace)
+{
+ auto it = layers.find(lyr_id);
+ if (it == layers.end()) {
+ ALOGE("dpy %" PRIu64 ": lyr %" PRIu64 ": bad layer handle", id, lyr_id);
+ return HWC2_ERROR_BAD_LAYER;
+ }
+
+ return it->second.set_dataspace(dataspace);
+}
+
hwc2_error_t hwc2_display::set_layer_blend_mode(hwc2_layer_t lyr_id,
hwc2_blend_mode_t blend_mode)
{
diff --git a/hwc2/hwc2_layer.cpp b/hwc2/hwc2_layer.cpp
index 8dd19ae..c448924 100644
--- a/hwc2/hwc2_layer.cpp
+++ b/hwc2/hwc2_layer.cpp
@@ -51,6 +51,11 @@ hwc2_error_t hwc2_layer::set_comp_type(hwc2_composition_t comp_type)
return ret;
}
+hwc2_error_t hwc2_layer::set_dataspace(android_dataspace_t dataspace)
+{
+ return buffer.set_dataspace(dataspace);
+}
+
hwc2_error_t hwc2_layer::set_blend_mode(hwc2_blend_mode_t blend_mode)
{
return buffer.set_blend_mode(blend_mode);