summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarissa Wall <marissaw@google.com>2017-03-02 22:09:37 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-03-02 22:09:37 +0000
commitcc7e4ffc852d436f5be3fbfa9fedfc86215a4051 (patch)
tree47f9c775cc1447ab25e5654439201042a2080998
parentc202c9d916e5437f12d7a91bbc644271faf89550 (diff)
parent77928baa13fdc95a545b6f817ba1aada0bd5acb6 (diff)
downloadflounder-cc7e4ffc852d436f5be3fbfa9fedfc86215a4051.tar.gz
hwc2: set layer plane alpha
am: 77928baa13 Change-Id: Ic17e70f4e6475519ac8770ceeb8456b059b8e519
-rw-r--r--hwc2/hwc2.cpp7
-rw-r--r--hwc2/hwc2.h9
-rw-r--r--hwc2/hwc2_buffer.cpp10
-rw-r--r--hwc2/hwc2_dev.cpp7
-rw-r--r--hwc2/hwc2_display.cpp11
-rw-r--r--hwc2/hwc2_layer.cpp5
6 files changed, 45 insertions, 4 deletions
diff --git a/hwc2/hwc2.cpp b/hwc2/hwc2.cpp
index 016b636..120bdd4 100644
--- a/hwc2/hwc2.cpp
+++ b/hwc2/hwc2.cpp
@@ -300,10 +300,11 @@ hwc2_error_t set_layer_display_frame(hwc2_device_t* /*device*/,
return HWC2_ERROR_NONE;
}
-hwc2_error_t set_layer_plane_alpha(hwc2_device_t* /*device*/,
- hwc2_display_t /*display*/, hwc2_layer_t /*layer*/, float /*alpha*/)
+hwc2_error_t set_layer_plane_alpha(hwc2_device_t *device,
+ hwc2_display_t display, hwc2_layer_t layer, float alpha)
{
- return HWC2_ERROR_NONE;
+ hwc2_dev *dev = reinterpret_cast<hwc2_context *>(device)->hwc2_dev;
+ return dev->set_layer_plane_alpha(display, layer, alpha);
}
hwc2_error_t set_layer_source_crop(hwc2_device_t* /*device*/,
diff --git a/hwc2/hwc2.h b/hwc2/hwc2.h
index 1d44809..d7d2c96 100644
--- a/hwc2/hwc2.h
+++ b/hwc2/hwc2.h
@@ -34,6 +34,7 @@ public:
/* Set properties */
hwc2_error_t set_dataspace(android_dataspace_t dataspace);
hwc2_error_t set_blend_mode(hwc2_blend_mode_t blend_mode);
+ hwc2_error_t set_plane_alpha(float plane_alpha);
private:
/* Provides more info on how to interpret the buffer contents such as
@@ -42,6 +43,10 @@ private:
/* The blend mode of the buffer */
hwc2_blend_mode_t blend_mode;
+
+ /* An alpha value in the range [0.0, 1.0] to be applied to the whole
+ * buffer */
+ float plane_alpha;
};
class hwc2_config {
@@ -105,6 +110,7 @@ public:
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);
+ hwc2_error_t set_plane_alpha(float plane_alpha);
static hwc2_layer_t get_next_id();
@@ -165,6 +171,7 @@ public:
android_dataspace_t dataspace);
hwc2_error_t set_layer_blend_mode(hwc2_layer_t lyr_id,
hwc2_blend_mode_t blend_mode);
+ hwc2_error_t set_layer_plane_alpha(hwc2_layer_t lyr_id, float plane_alpha);
static hwc2_display_t get_next_id();
@@ -245,6 +252,8 @@ public:
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);
+ hwc2_error_t set_layer_plane_alpha(hwc2_display_t dpy_id,
+ hwc2_layer_t lyr_id, float plane_alpha);
/* Callback functions */
void hotplug(hwc2_display_t dpy_id, hwc2_connection_t connection);
diff --git a/hwc2/hwc2_buffer.cpp b/hwc2/hwc2_buffer.cpp
index a2952e7..0b871bc 100644
--- a/hwc2/hwc2_buffer.cpp
+++ b/hwc2/hwc2_buffer.cpp
@@ -20,7 +20,8 @@
hwc2_buffer::hwc2_buffer()
: dataspace(),
- blend_mode(HWC2_BLEND_MODE_NONE) { }
+ blend_mode(HWC2_BLEND_MODE_NONE),
+ plane_alpha(1.0) { }
hwc2_error_t hwc2_buffer::set_dataspace(android_dataspace_t dataspace)
{
@@ -40,3 +41,10 @@ hwc2_error_t hwc2_buffer::set_blend_mode(hwc2_blend_mode_t blend_mode)
return HWC2_ERROR_NONE;
}
+
+hwc2_error_t hwc2_buffer::set_plane_alpha(float plane_alpha)
+{
+ this->plane_alpha = plane_alpha;
+
+ return HWC2_ERROR_NONE;
+}
diff --git a/hwc2/hwc2_dev.cpp b/hwc2/hwc2_dev.cpp
index 46ca61b..bf48316 100644
--- a/hwc2/hwc2_dev.cpp
+++ b/hwc2/hwc2_dev.cpp
@@ -200,6 +200,13 @@ hwc2_error_t hwc2_dev::set_layer_blend_mode(hwc2_display_t dpy_id,
blend_mode);
}
+hwc2_error_t hwc2_dev::set_layer_plane_alpha(hwc2_display_t dpy_id,
+ hwc2_layer_t lyr_id, float plane_alpha)
+{
+ return displays.find(dpy_id)->second.set_layer_plane_alpha(lyr_id,
+ plane_alpha);
+}
+
void hwc2_dev::hotplug(hwc2_display_t dpy_id, hwc2_connection_t connection)
{
auto it = displays.find(dpy_id);
diff --git a/hwc2/hwc2_display.cpp b/hwc2/hwc2_display.cpp
index 9f43fa4..59c2456 100644
--- a/hwc2/hwc2_display.cpp
+++ b/hwc2/hwc2_display.cpp
@@ -300,6 +300,17 @@ hwc2_error_t hwc2_display::set_layer_blend_mode(hwc2_layer_t lyr_id,
return it->second.set_blend_mode(blend_mode);
}
+hwc2_error_t hwc2_display::set_layer_plane_alpha(hwc2_layer_t lyr_id, float plane_alpha)
+{
+ 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_plane_alpha(plane_alpha);
+}
+
hwc2_display_t hwc2_display::get_next_id()
{
return display_cnt++;
diff --git a/hwc2/hwc2_layer.cpp b/hwc2/hwc2_layer.cpp
index c448924..c1272b7 100644
--- a/hwc2/hwc2_layer.cpp
+++ b/hwc2/hwc2_layer.cpp
@@ -61,6 +61,11 @@ hwc2_error_t hwc2_layer::set_blend_mode(hwc2_blend_mode_t blend_mode)
return buffer.set_blend_mode(blend_mode);
}
+hwc2_error_t hwc2_layer::set_plane_alpha(float plane_alpha)
+{
+ return buffer.set_plane_alpha(plane_alpha);
+}
+
hwc2_layer_t hwc2_layer::get_next_id()
{
return layer_cnt++;