diff options
author | Marissa Wall <marissaw@google.com> | 2017-03-02 22:10:28 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-03-02 22:10:28 +0000 |
commit | b8396161893350c5dc347c0cf7a32e9dbd407467 (patch) | |
tree | aa5fb6d932424a6e30ae4d00fdbd9e26951cdb9d | |
parent | 14134818bd56da0bf23a449e1d095c6cba15d84e (diff) | |
parent | f93cdd37b81b240144b49171ee6cd27d56e01b24 (diff) | |
download | flounder-b8396161893350c5dc347c0cf7a32e9dbd407467.tar.gz |
hwc2: virtual displays
am: f93cdd37b8
Change-Id: I645638bc9945c9c3fc17587022e3e02bae82966b
-rw-r--r-- | hwc2/hwc2.cpp | 30 | ||||
-rw-r--r-- | hwc2/hwc2.h | 9 | ||||
-rw-r--r-- | hwc2/hwc2_dev.cpp | 29 |
3 files changed, 54 insertions, 14 deletions
diff --git a/hwc2/hwc2.cpp b/hwc2/hwc2.cpp index 1aadf19..838cf78 100644 --- a/hwc2/hwc2.cpp +++ b/hwc2/hwc2.cpp @@ -41,18 +41,19 @@ hw_module_t HAL_MODULE_INFO_SYM = { }; -hwc2_error_t create_virtual_display(hwc2_device_t* /*device*/, - uint32_t /*width*/, uint32_t /*height*/, - android_pixel_format_t* /*format*/, - hwc2_display_t* /*out_display*/) +hwc2_error_t create_virtual_display(hwc2_device_t *device, uint32_t width, + uint32_t height, android_pixel_format_t *format, + hwc2_display_t *out_display) { - return HWC2_ERROR_NONE; + hwc2_dev *dev = reinterpret_cast<hwc2_context *>(device)->hwc2_dev; + return dev->create_virtual_display(width, height, format, out_display); } -hwc2_error_t destroy_virtual_display(hwc2_device_t* /*device*/, - hwc2_display_t /*display*/) +hwc2_error_t destroy_virtual_display(hwc2_device_t *device, + hwc2_display_t display) { - return HWC2_ERROR_NONE; + hwc2_dev *dev = reinterpret_cast<hwc2_context *>(device)->hwc2_dev; + return dev->destroy_virtual_display(display); } void dump(hwc2_device_t* /*device*/, uint32_t* /*out_size*/, @@ -61,9 +62,10 @@ void dump(hwc2_device_t* /*device*/, uint32_t* /*out_size*/, return; } -uint32_t get_max_virtual_display_count(hwc2_device_t* /*device*/) +uint32_t get_max_virtual_display_count(hwc2_device_t *device) { - return HWC2_ERROR_NONE; + hwc2_dev *dev = reinterpret_cast<hwc2_context *>(device)->hwc2_dev; + return dev->get_max_virtual_display_count(); } hwc2_error_t register_callback(hwc2_device_t *device, @@ -229,11 +231,11 @@ hwc2_error_t set_color_transform(hwc2_device_t *device, hwc2_display_t display, return dev->set_color_transform(display, matrix, hint); } -hwc2_error_t set_output_buffer(hwc2_device_t* /*device*/, - hwc2_display_t /*display*/, buffer_handle_t /*buffer*/, - int32_t /*release_fence*/) +hwc2_error_t set_output_buffer(hwc2_device_t *device, hwc2_display_t display, + buffer_handle_t buffer, int32_t release_fence) { - return HWC2_ERROR_NONE; + hwc2_dev *dev = reinterpret_cast<hwc2_context *>(device)->hwc2_dev; + return dev->set_output_buffer(display, buffer, release_fence); } hwc2_error_t set_power_mode(hwc2_device_t *device, hwc2_display_t display, diff --git a/hwc2/hwc2.h b/hwc2/hwc2.h index 158df38..af5902a 100644 --- a/hwc2/hwc2.h +++ b/hwc2/hwc2.h @@ -590,6 +590,15 @@ public: hwc2_error_t get_display_type(hwc2_display_t dpy_id, hwc2_display_type_t *out_type) const; + /* Virtual display functions */ + uint32_t get_max_virtual_display_count() const; + hwc2_error_t create_virtual_display(uint32_t width, uint32_t height, + android_pixel_format_t *format, + hwc2_display_t *out_display); + hwc2_error_t destroy_virtual_display(hwc2_display_t dpy_id); + hwc2_error_t set_output_buffer(hwc2_display_t dpy_id, + buffer_handle_t buffer, int32_t release_fence); + /* Power modes */ hwc2_error_t set_power_mode(hwc2_display_t dpy_id, hwc2_power_mode_t mode); hwc2_error_t get_doze_support(hwc2_display_t dpy_id, int32_t *out_support) diff --git a/hwc2/hwc2_dev.cpp b/hwc2/hwc2_dev.cpp index c568d3e..60af4cf 100644 --- a/hwc2/hwc2_dev.cpp +++ b/hwc2/hwc2_dev.cpp @@ -86,6 +86,35 @@ hwc2_error_t hwc2_dev::get_display_type(hwc2_display_t dpy_id, return HWC2_ERROR_NONE; } +uint32_t hwc2_dev::get_max_virtual_display_count() const +{ + return 0; +} + +hwc2_error_t hwc2_dev::create_virtual_display(uint32_t /*width*/, + uint32_t /*height*/, android_pixel_format_t* /*format*/, + hwc2_display_t* /*out_display*/) +{ + return HWC2_ERROR_NO_RESOURCES; +} + +hwc2_error_t hwc2_dev::destroy_virtual_display(hwc2_display_t dpy_id) +{ + if (displays.find(dpy_id) != displays.end()) + return HWC2_ERROR_BAD_PARAMETER; + else + return HWC2_ERROR_BAD_DISPLAY; +} + +hwc2_error_t hwc2_dev::set_output_buffer(hwc2_display_t dpy_id, + buffer_handle_t /*buffer*/, int32_t /*release_fence*/) +{ + if (displays.find(dpy_id) != displays.end()) + return HWC2_ERROR_UNSUPPORTED; + else + return HWC2_ERROR_BAD_DISPLAY; +} + hwc2_error_t hwc2_dev::set_power_mode(hwc2_display_t dpy_id, hwc2_power_mode_t mode) { |