diff options
author | Marissa Wall <marissaw@google.com> | 2017-03-02 22:09:37 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-03-02 22:09:37 +0000 |
commit | cc7e4ffc852d436f5be3fbfa9fedfc86215a4051 (patch) | |
tree | 47f9c775cc1447ab25e5654439201042a2080998 | |
parent | c202c9d916e5437f12d7a91bbc644271faf89550 (diff) | |
parent | 77928baa13fdc95a545b6f817ba1aada0bd5acb6 (diff) | |
download | flounder-cc7e4ffc852d436f5be3fbfa9fedfc86215a4051.tar.gz |
hwc2: set layer plane alpha
am: 77928baa13
Change-Id: Ic17e70f4e6475519ac8770ceeb8456b059b8e519
-rw-r--r-- | hwc2/hwc2.cpp | 7 | ||||
-rw-r--r-- | hwc2/hwc2.h | 9 | ||||
-rw-r--r-- | hwc2/hwc2_buffer.cpp | 10 | ||||
-rw-r--r-- | hwc2/hwc2_dev.cpp | 7 | ||||
-rw-r--r-- | hwc2/hwc2_display.cpp | 11 | ||||
-rw-r--r-- | hwc2/hwc2_layer.cpp | 5 |
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++; |